Python 3.x ansible.executor.playbook\u executor.playbook执行者未执行playbook
我有python脚本以编程方式执行ansible playbook,python调用ansible API,但play没有得到执行。我相信这是因为start_at_task设置为None 启动任务时启动任务的值应该是多少?谁能帮帮我吗 Ansible版本:2.9.9 Python版本:3.6.8 这是我的run_剧本方法Python 3.x ansible.executor.playbook\u executor.playbook执行者未执行playbook,python-3.x,ansible,ansible-2.x,Python 3.x,Ansible,Ansible 2.x,我有python脚本以编程方式执行ansible playbook,python调用ansible API,但play没有得到执行。我相信这是因为start_at_task设置为None 启动任务时启动任务的值应该是多少?谁能帮帮我吗 Ansible版本:2.9.9 Python版本:3.6.8 这是我的run_剧本方法 def run_playbook(play_book, extra_vars, servers, inventory_path, tags='all'): base_playb
def run_playbook(play_book, extra_vars, servers, inventory_path, tags='all'):
base_playbook_path = os.environ.get('PLAYBOOK_PATH',
'/hom/playbooks/')
playbook_path = base_playbook_path + play_book
context.CLIARGS = ImmutableDict(tags=tags, connection='paramiko', remote_user='xyz', listtags=False, listtasks=False,
listhosts=False, syntax=False, module_path=None, forks=100,
private_key_file='/var/lib/jenkins/.ssh/xyz.pem', ssh_common_args=None, ssh_extra_args=None,
sftp_extra_args=None, scp_extra_args=None, become=None, become_method=None,
become_user=None, verbosity=True, check=False, start_at_task=None)
loader = DataLoader()
loader.load_from_file(base_playbook_path + '.vault_pass.txt')
inventory = InventoryManager(loader=loader, sources=inventory_path)
inventory.subset(servers)
variable_manager = VariableManager(loader=loader, inventory=inventory)
variable_manager._extra_vars = extra_vars
passwords = {}
playbook = PlaybookExecutor(playbooks=[playbook_path],
inventory=inventory,
variable_manager=variable_manager,
loader=loader, passwords=passwords)
result = playbook.run()
return result
这是打印内核版本的简单剧本
---
- name: Get Kernel Versions
gather_facts: no
hosts: all
become: yes
become_method: sudo
tasks:
- name: Fetch Kernel Version
shell: cat /etc/redhat-release
register: os_release
- debug:
msg: "{{ os_release.stdout }}"
输出:
PLAY [Get Kernel Versions] ****************************************************************************************************************************
PLAY RECAP ********************************************************************************************************************************************
0
你确定代码没有异常退出吗?我建议
try:run\u playbook(…),例外情况为e:print(“run\u playbook error:,e”)
或在code@mdaniel它返回退出代码0,它不会抛出任何异常。我唯一要建议的是,我成功地使用了它,但我承认这并不能解释为什么你的代码不能work@mdanielansible runner的工作方式就像一个迷人的ansible API漂亮的包装器。我仍然想知道为什么我的代码不起作用,如果我能找到答案,我会很高兴的