栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python API运行Ansible-Playbook

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python API运行Ansible-Playbook

弃用声明:此帖子自ansible 2起不起作用。API已更改。

这在“ Python
API”下的Ansible文档中进行了介绍。

例如,

ansible -i hosts dbservers -m setup
通过以下方式实现:

import ansible.runnerrunner = ansible.runner.Runner(   module_name='setup',   module_args='',   pattern='dbservers',)dbservers_get_facts = runner.run()

__init__
Runner方法中有许多未记录的参数(来自
ansible.runner
)。有太多列表内联,但我已经包括了一些在这个岗位作为猜测什么你专门找参数。

class Runner(object):    ''' core API interface to ansible '''    # see bin/ansible for how this is used...    def __init__(self,        host_list=C.DEFAULT_HOST_LIST,      # ex: /etc/ansible/hosts, legacy usage        module_path=None,        # ex: /usr/share/ansible        module_name=C.DEFAULT_MODULE_NAME,  # ex: copy        module_args=C.DEFAULT_MODULE_ARGS,  # ex: "src=/tmp/a dest=/tmp/b"        ...        pattern=C.DEFAULT_PATTERN,          # which hosts?  ex: 'all', 'acme.example.org'        remote_user=C.DEFAULT_REMOTE_USER,  # ex: 'username'        remote_pass=C.DEFAULT_REMOTE_PASS,  # ex: 'password123' or None if using key        remote_port=None,        # if SSH on different ports        private_key_file=C.DEFAULT_PRIVATE_KEY_FILE, # if not using keys/passwords        sudo_pass=C.DEFAULT_SUDO_PASS,      # ex: 'password123' or None        ...        sudo=False,   # whether to run sudo or not        sudo_user=C.DEFAULT_SUDO_USER,      # ex: 'root'        module_vars=None,        # a playbooks internals thing        play_vars=None,          #        play_file_vars=None,     #        role_vars=None,          #        role_params=None,        #        default_vars=None,       #        extra_vars=None,         # extra vars specified with he playbook(s)        is_playbook=False,       # running from playbook or not?        inventory=None,          # reference to Inventory object        ...        su=False,     # Are we running our command via su?        su_user=None, # User to su to when running command, ex: 'root'        su_pass=C.DEFAULT_SU_PASS,        vault_pass=None,        ...        ):

例如,上面指定sudo用户和pass的命令将是:

runner = ansible.runner.Runner(   module_name='setup',   module_args='',   pattern='dbservers',   remote_user='some_user'   remote_pass='some_pass_or_python_expression_that_returns_a_string')

对于剧本,请查看playbook.PlayBook,它需要一组类似的初始化程序:

class PlayBook(object):    '''    runs an ansible playbook, given as a datastructure or YAML filename.    ...    '''    # *****************************************************    def __init__(self,        playbook         = None,        host_list        = C.DEFAULT_HOST_LIST,        module_path      = None,        ....

并可以通过该

.run()
方法执行。例如:

from ansible.playbook import PlayBookpb = PlayBook(playbook='/path/to/book.yml, --other initializers--)pb.run()

ansible-playbook
文件中可以找到更可靠的用法。

据我所知,将剧本转换为Python模块会涉及更多的工作,但是上面列出的文档应该能让您了解,您可以重用Ansible内置的YAML解析器将剧本转换为变量。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号