Python 3.x ansible.executor.playbook\u executor.playbook执行者未执行playbook

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

我有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_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漂亮的包装器。我仍然想知道为什么我的代码不起作用,如果我能找到答案,我会很高兴的