美文网首页ansible
02-Ansible命令行工具

02-Ansible命令行工具

作者: 洛神鬼道 | 来源:发表于2018-08-27 10:48 被阅读0次

    Ansible

    Ansible version : 2.6.2

    ad-hoc命令简介

    什么是ad-hoc命令?

    ad-hoc命令就是想快速的执行一些任务,但是执行完成后不想保存。

    并行和shell命令

    举个例子

    让我们使用Ansible的命令行工具重启亚特兰大的所有Web服务器,一次10个。首先,让我们设置SSH代理,以便它能记住我们的凭据。

    如果您不想使用ssh-agent并希望使用密码而不是密钥进行SSH,则可以使用--ask-pass-k),但最好只使用ssh-agent。

    ssh-agent bash
    ssh-add ~/.ssh/id_rsa
    

    什么是ssh-agent?

    ssh-agent命令是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。

    其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。

    现在,在组中的所有服务器上运行该命令,在本例中为 atlanta,以10个并行分叉运行:

    ansible atlanta -a "/sbin/reboot" -f 10
    

    /usr/bin/ansible将默认从您的用户帐户运行。如果您不喜欢此行为,请传入-u username。如果要以不同的用户身份运行命令

    ansible atlanta -a "/usr/bin/foo" -u username
    

    通常,您不希望仅从您的用户帐户执行操作。如果要通过权限提升运行命令

    ansible atlanta -a“/ usr / bin / foo”-u username --become [--ask-become-pass]
    

    如果您没有使用无密码权限提升方法(sudo/su/pfexec/doas/etc),请使用--ask-become-pass (-K) 。这将以交互方式提示您输入密码。使用无密码设置可以使事情更容易自动化,但这不是必需的。

    使用--become-user也可以成为root之外的用户

    ansible atlanta -a“/ usr / bin / foo”-u username --become --become-user otheruser [--ask-become-pass]
    

    我们还可以选择要运行的Ansible的“module”。通常命令会使用-m指定模块名称,默认模块名称是'command',因此我们不需要一直指定。我们将-m在后面的示例中使用它来运行其他一些其他模块。

    command不支持管道以及重定向操作,尽管shell变量仍然工作。如果你想使用的话,请用shell模块替代。

    使用ad-hoc(非Playbooks)运行任何命令时,特别注意shell引用规则,本地shell在传递给Ansible之前不会使用变量。

    命令行模式下单引号、与双引号执行本地变量区别,如果使用本地变量时,一定要使用双引号。

    PY=12345
    ansible localhost -m shell -a 'echo $PY'
    localhost | SUCCESS | rc=0 >>
    
    $ ansible localhost -m shell -a "echo $PY"         
    localhost | SUCCESS | rc=0 >>
    12345
    
    

    此外,ansible通过在开始之前检查当前状态来实现一种幂等形式,并且如果当前状态与指定的最终状态匹配,则什么都不做。

    Ansible命令行工具

    ansible命令

    范例

    ansible <host-pattern> [options]
    

    说明

    Ansible是一个非常简单的工具/框架/ API,用于做“远程事物”。此命令允许您针对一组主机定义和运行单个任务“playbook”。

    选项

    询问su密码(弃用,使用become)

    --ask-su-pass
    

    询问sudo密码(弃用,使用become)

    --ask-sudo-pass
    

    询问vault密码

    --ask-vault-pass
    

    使用的提权方法(默认= sudo),有效值 [ sudo | su | pbrun | pfexec | doas | dzdo | ksu | runas | pmrun | enable | machinectl ]

    --become-method <BECOME_METHOD>
    

    使用该用户运行,默认值为root

    --become-user <BECOME_USER>
    

    列出匹配的主机列表,但不执行任何操作。

    --list-hosts
    

    由于ansible命令不使用playbooks,因此将其用作替代playbook目录。这将设置许多功能的相对路径,包括roles/ group_vars/ 等.

    --playbook-dir <BASEDIR>
    

    使用文件进行连接认证

    --private-key, --key-file
    

    指定仅传递给scp的额外参数(例如-l)

    --scp-extra-args <SCP_EXTRA_ARGS>
    

    指定仅传递给sftp的额外参数(例如-f,-l)

    --sftp-extra-args <SFTP_EXTRA_ARGS>
    

    指定传递给sftp / scp / ssh的公共参数(例如ProxyCommand)

    --ssh-common-args <SSH_COMMON_ARGS>
    

    对playbook语法检查,并不执行

    --syntax-check
    

    使用vault标识

    --vault-id
    

    vault密码文件

    --vault-password-file
    

    ansible版本

    --version
    

    异步运行,X秒后失败(默认=N/A)

    -B <SECONDS>, --background <SECONDS>
    

    不做任何改变; 相反,尝试预测可能发生的一些变化

    -C, --check
    

    更改(小)文件和模板时,显示这些文件的差异; 与-check配合更好

    -D, --diff
    

    询问become密码

    -K, --ask-become-pass
    

    将冒号分隔的路径预先添加到模块库 (默认值=[u’/home/jenkins/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’])

    -M, --module-path
    

    如果使用-B(默认值=15),则设置轮询间隔

    -P <POLL_INTERVAL>, --poll <POLL_INTERVAL>
    

    以su作为此用户运行操作(默认=None)(弃用,使用become)

    -R <SU_USER>, --su-user <SU_USER>
    

    用su运行操作(弃用,使用become)

    -S, --su
    

    以秒为单位覆盖连接超时(默认值=10)

    -T <TIMEOUT>, --timeout <TIMEOUT>
    

    期望sudo用户(默认= root)(弃用,使用become)

    -U <SUDO_USER>, --sudo-user <SUDO_USER>
    

    模块参数

    -a <MODULE_ARGS>, --args <MODULE_ARGS>
    

    使用become操作,并不意味密码提示

    -b, --become
    

    连接类型(默认值=smart)

    -c <CONNECTION>, --connection <CONNECTION>
    

    设置额外变量为key=value或者json、yaml,如果文件名预置为@

    -e, --extra-vars
    

    指定并行处理数,(默认值=5)

    -f <FORKS>, --forks <FORKS>
    

    显示帮助信息

    -h, --help
    

    指定inventory主机路径或逗号分隔的主机列表。--inventory-file已弃用

    -i, --inventory, --inventory-file
    

    询问连接密码

    -k, --ask-pass
    

    进一步限制所选主机为额外模式

    -l <SUBSET>, --limit <SUBSET>
    

    选择执行模块名称(默认值=command)

    -m <MODULE_NAME>, --module-name <MODULE_NAME>
    

    执行结果显示为一行

    -o, --one-line
    

    使用sudo操作(无密码)(已弃用,使用become)

    -s, --sudo
    

    日志输出到指定目录

    -t <TREE>, --tree <TREE>
    

    设置连接用户(默认值=None)

    -u <REMOTE_USER>, --user <REMOTE_USER>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-config命令

    范例

    ansible-config [view|dump|list] [--help] [options] [ansible.cfg]
    

    说明

    命令行配置

    选项

    显示版本号

    --version
    

    配置文件的路径,默认为优先级中找到的第一个文件。

    -c <CONFIG_FILE>, --config <CONFIG_FILE>
    

    显示帮助文件

    -h, --help
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    动作

    list

    列出读取lib/constants.py的所有当前配置,并显示env和配置文件设置名称

    dump

    显示当前设置,如果指定,则合并ansible.cfg

    仅显示已从默认值更改的配置

    --only-changed
    
    view

    显示当前配置文件

    优先级

    ansible将读取配置文件优先级顺序当前工作目录中的ANSIBLE_CONFIG,ansible.cfg,主目录中的.ansible.cfg或/etc/ansible/ansible.cfg。

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-console命令

    范例

    ansible-console [<host-pattern>] [options]
    

    描述

    交互模式下的ansible

    选项

    询问su密码(弃用,使用become)

    --ask-su-pass
    

    询问sudo密码(弃用,使用become)

    --ask-sudo-pass
    

    询问vault密码

    --ask-vault-pass
    

    使用的提权方法(默认= sudo),有效值 [ sudo | su | pbrun | pfexec | doas | dzdo | ksu | runas | pmrun | enable | machinectl ]

    --become-method <BECOME_METHOD>
    

    使用该用户运行,默认值为root

    --become-user <BECOME_USER>
    

    列出匹配的主机列表,但不执行任何操作。

    --list-hosts
    

    由于ansible-console命令不使用playbooks,因此将其用作替代playbook目录。这将设置许多功能的相对路径,包括roles/ group_vars/ 等.

    --playbook-dir <BASEDIR>
    

    指定文件进行连接认证

    --private-key, --key-file
    

    指定仅传递给scp的额外参数(例如-l)

    --scp-extra-args <SCP_EXTRA_ARGS>
    

    指定仅传递给sftp的额外参数(例如-f,-l)

    --sftp-extra-args <SFTP_EXTRA_ARGS>
    

    指定传递给sftp / scp / ssh的公共参数(例如ProxyCommand)

    --ssh-common-args <SSH_COMMON_ARGS>
    

    指定仅传递给ssh的额外参数(例如-R)

    --ssh-extra-args <SSH_EXTRA_ARGS>
    

    一步步执行,执行前确认

    --step
    

    对playbook语法检查,并不执行

    --syntax-check
    

    使用vault标识

    --vault-id
    

    vault密码文件

    --vault-password-file
    

    ansible版本

    --version
    

    不做任何改变; 相反,尝试预测可能发生的一些变化

    -C, --check
    

    更改(小)文件和模板时,显示这些文件的差异; 与-check配合更好

    -D, --diff
    

    询问become密码

    -K, --ask-become-pass
    

    将冒号分隔的路径预先添加到模块库 (默认值=[u’/home/jenkins/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’])

    -M, --module-path
    

    以su作为此用户运行操作(默认=None)(弃用,使用become)

    -R <SU_USER>, --su-user <SU_USER>
    

    用su运行操作(弃用,使用become)

    -S, --su
    

    以秒为单位覆盖连接超时(默认值=10)

    -T <TIMEOUT>, --timeout <TIMEOUT>
    

    期望sudo用户(默认= root)(弃用,使用become)

    -U <SUDO_USER>, --sudo-user <SUDO_USER>
    

    使用become操作,并不意味密码提示

    -b, --become
    

    连接类型(默认值=smart)

    -c <CONNECTION>, --connection <CONNECTION>
    

    设置额外变量为key=value或者json、yaml,如果文件名预置为@

    -e, --extra-vars
    

    指定并行处理数,(默认值=5)

    -f <FORKS>, --forks <FORKS>
    

    显示帮助信息

    -h, --help
    

    指定inventory主机路径或逗号分隔的主机列表。--inventory-file已弃用

    -i, --inventory, --inventory-file
    

    询问连接密码

    -k, --ask-pass
    

    进一步限制所选主机为额外模式

    -l <SUBSET>, --limit <SUBSET>
    

    使用sudo操作(无密码)(已弃用,使用become)

    -s, --sudo
    

    设置连接用户(默认值=None)

    -u <REMOTE_USER>, --user <REMOTE_USER>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-doc命令

    范例

    ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
    

    描述

    显示Ansible库中安装的模块的信息。它显示了一个简洁的插件列表及其简短描述,提供了他们的DOCUMENTATION字符串的打印输出,它可以创建一个简短的“片段”,可以粘贴到剧本中。

    选项

    显示版本号

    --version
    

    显示插件名称及其源文件不包含摘要

    -F, --list_files
    

    将冒号分隔的路径预先添加到模块库 (默认值=[u’/home/jenkins/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’])

    -M, --module-path
    

    仅限内部测试显示所有插件的文档。

    -a, --all
    

    显示帮助信息

    -h, --help
    

    仅限内部测试转储所有插件的json元数据

    -j, --json
    

    列出可以用的插件

    -l, --list
    

    显示指定插件的playbook片段

    -s, --snippet
    

    选择插件类型(默认为module)

    -t <TYPE>, --type <TYPE>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-galaxy命令

    范例

    ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...
    

    描述

    用于管理共享存储库中的Ansible角色的命令。 默认的Ansible Galaxy https://galaxy.ansible.com.

    选项

    列出所有集成roles,(存疑,未找到该选项)

    --list
    

    删除与提供的ID值匹配的集成。使用-list查看ID值。(存疑,未找到该选项)

    --remove <REMOVE_ID>
    

    显示版本号

    --version
    

    忽略SSL证书验证错误

    -c, --ignore-certs
    

    目标api server

    -s <API_SERVER>, --server <API_SERVER>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    动作

    info

    打印出有关已安装角色的详细信息以及galaxy API提供的信息。

    创建roles不查询galaxy api

    --offline
    

    包含roles的目录的路径,默认值roles_path配置在ansible.cfg文件里面(没有配置,则为/etc/ansible/roles)

    -p, --roles-path
    
    search

    Ansible Galaxy查找roles

    GitHub 用户名

    --author <AUTHOR>
    

    过滤的galaxy标签

    --galaxy-tags <GALAXY_TAGS>
    

    过滤OS平台

    --platforms <PLATFORMS>
    

    包含roles的目录的路径,默认值roles_path配置在ansible.cfg文件里面(没有配置,则为/etc/ansible/roles)

    -p, --roles-path
    
    setup

    为Ansible Galaxy roles从github或者Travis安装integration

    列出所有自己集成

    --list
    

    删除与提供的ID值匹配的集成。使用-list查看ID值

    --remove <REMOVE_ID>
    
    list

    列出本地系统上安装的roles或者匹配作为参数传递的单个role。

    包含roles的目录的路径,默认值roles_path配置在ansible.cfg文件里面(没有配置,则为/etc/ansible/roles)

    -p, --roles-path
    
    remove

    从本地系统中删除作为参数传递的roles列表

    包含roles的目录的路径,默认值roles_path配置在ansible.cfg文件里面(没有配置,则为/etc/ansible/roles)

    -p, --roles-path
    
    init

    创建一个符合规定的role原始框架

    指定role创建的目录,默认是当前工作目录

    --init-path <INIT_PATH>
    

    创建时不查询galaxy api

    --offline
    

    新role应基于role框架路径

    --role-skeleton <ROLE_SKELETON>
    

    初始化使用备用的role类型,有效值包含‘container’, ‘apb’ and ‘network’.

    --type <ROLE_TYPE>
    

    强制覆盖已存在role

    -f, --force
    
    install

    使用要安装的args列表,除去规定的-f,roles列表可以是一个名字(将通过galaxy API and github下载)或者本地的tar.gz文件。

    强制覆盖已存在role

    -f, --force
    

    打包role时,请使用tar而不是scm archive选项

    -g, --keep-scm-meta
    

    忽略错误并继续下一个指定的role

    -i, --ignore-errors
    

    不要下载作为依赖项列出的role

    -n, --no-deps
    

    包含roles的目录的路径,默认值roles_path配置在ansible.cfg文件里面(没有配置,则为/etc/ansible/roles)

    -p, --roles-path
    

    包含要导入的role列表的文件

    -r <ROLE_FILE>, --role-file <ROLE_FILE>
    
    import

    用于将role导入Ansible Galaxy

    要导入的分支的名称。默认为存储库的默认分支(通常为master)

    --branch <REFERENCE>
    

    无需等待导入结果

    --no-wait
    

    如果role的名称与repo名称不同,则role名称必须指定

    --role-name <ROLE_NAME>
    

    检查指定github_user/github_repo的最新导入请求的状态。

    --status
    
    login

    通过Github验证用户的身份,并从Ansible Galaxy中检索身份验证令牌.

    使用github token 而不是用户名和密码进行验证。

    --github-token <TOKEN>
    
    delete

    从ansible galaxy删除role

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件命令

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-inventory

    范例

    ansible-inventory [options] [host|group]
    

    说明

    用于显示或者dump inventory配置就像ansible看的那样

    选项

    询问vault密码

    --ask-vault-pass
    

    当使用--list的时候,优化后导出的一种方式表现,而不是Ansible如何处理它的准确表示

    --export
    

    由于ansible-console命令不使用playbooks,因此将其用作替代playbook目录。这将设置许多功能的相对路径,包括roles/ group_vars/ 等.

    --playbook-dir <BASEDIR>
    

    将vars添加到图形显示中,除非与-graph一起使用否则忽略

    --vars
    

    使用vault标识

    --vault-id
    

    vault密码文件

    --vault-password-file
    

    版本号

    --version
    

    帮助信息

    -h, --help
    

    指定inventory 主机路径或者逗号分隔的主机列表。--inventory-file被弃用

    -i, --inventory, --inventory-file
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    使用yaml格式替换默认的json,-graph下忽略

    -y, --yaml
    

    动作

    必须在调用时使用以下其中一个,只有一个!

    创建inventory图模式,如果提供该模式,则它必须是有效的组名

    --graph
    

    输出特定主机信息,作为inventory脚本

    --host <HOST>
    

    输出所有主机信息,作为inventory脚本

    --list
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-playbook命令

    范例

    ansible-playbook [options] playbook.yml [playbook2 ...]
    

    说明

    这个工具用来运行Ansible playbooks,它是一个配置和多节点部署系统

    选项

    询问su密码(弃用,使用become)

    --ask-su-pass
    

    询问sudo密码(弃用,使用become)

    --ask-sudo-pass
    

    询问vault密码

    --ask-vault-pass
    

    使用的提权方法(默认= sudo),有效值 [ sudo | su | pbrun | pfexec | doas | dzdo | ksu | runas | pmrun | enable | machinectl ]

    --become-method <BECOME_METHOD>
    

    使用该用户运行,默认值为root

    --become-user <BECOME_USER>
    

    清除在inventory里面每台主机的真实缓存

    --flush-cache
    

    及时task失败仍然执行handlers

    --force-handlers
    

    输出匹配的主机列表,不会执行任何其他操作

    --list-hosts
    

    列出所有可用的标签

    --list-tags
    

    列出将要执行所有tasks

    --list-tasks
    

    指定文件进行连接认证

    --private-key, --key-file
    

    指定仅传递给scp的额外参数(例如-l)

    --scp-extra-args <SCP_EXTRA_ARGS>
    

    指定仅传递给sftp的额外参数(例如-f,-l)

    --sftp-extra-args <SFTP_EXTRA_ARGS>
    

    指定传递给sftp / scp / ssh的公共参数(例如ProxyCommand)

    --ssh-common-args <SSH_COMMON_ARGS>
    

    仅运行其标签与这些值不匹配的play和tasks

    --skip-tags
    

    指定仅传递给ssh的额外参数(例如-R)

    --ssh-extra-args <SSH_EXTRA_ARGS>
    

    在匹配此名称的任务中启动playbook

    --start-at-task <START_AT_TASK>
    

    一步步执行:在运行前确认每项任务

    --step
    

    语法检查,但是不会执行

    --syntax-check
    

    使用vault标识

    --vault-id
    

    指定vault密码文件

    --vault-password-file
    

    显示版本号

    --version
    

    不做任何改变; 相反,尝试预测可能发生的一些变化

    -C, --check
    

    更改(小)文件和模板时,显示这些文件的差异; 与-check配合更好

    -D, --diff
    

    询问become密码

    -K, --ask-become-pass
    

    将冒号分隔的路径预先添加到模块库 (默认值=[u’/home/jenkins/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’])

    -M, --module-path
    

    以su作为此用户运行操作(默认=None)(弃用,使用become)

    -R <SU_USER>, --su-user <SU_USER>
    

    用su运行操作(弃用,使用become)

    -S, --su
    

    以秒为单位覆盖连接超时(默认值=10)

    -T <TIMEOUT>, --timeout <TIMEOUT>
    

    期望sudo用户(默认= root)(弃用,使用become)

    -U <SUDO_USER>, --sudo-user <SUDO_USER>
    

    使用become操作,并不意味密码提示

    -b, --become
    

    连接类型(默认值=smart)

    -c <CONNECTION>, --connection <CONNECTION>
    

    设置额外变量为key=value或者json、yaml,如果文件名预置为@

    -e, --extra-vars
    

    指定并行处理数,(默认值=5)

    -f <FORKS>, --forks <FORKS>
    

    显示帮助信息

    -h, --help
    

    指定inventory主机路径或逗号分隔的主机列表。--inventory-file已弃用

    -i, --inventory, --inventory-file
    

    询问连接密码

    -k, --ask-pass
    

    进一步限制所选主机为额外模式

    -l <SUBSET>, --limit <SUBSET>
    

    使用sudo操作(无密码)(已弃用,使用become)

    -s, --sudo
    

    仅运行使用这些值标记的play和tasks

    
    

    以此用户身份连接(默认=None)

    -u <REMOTE_USER>, --user <REMOTE_USER>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-pull命令

    范例

    ansible-pull -U <repository> [options] [<playbook.yml>]
    

    说明

    ansible-pull用于在每个受管节点上启动ansible的远程副本,每个设置通过cron运行,并通过源repository更新playbook源。这将ansible的默认推送架构反转为拉去架构,该架构具有接近无限的扩展潜力。

    可以调整设置playbook来改变cron频率、记录位置和参数更改为ansible-pull。这对于极端横向扩展和定期修复都很有用。使用'fetch'模块从ansible-pull运行中检索日志将是从ansible-pull收集和分析远程日志的一种很好的方法。

    选项

    如果尚未添加,则为repo url添加hostkey。

    --accept-host-key
    

    询问su密码(弃用,使用become)

    --ask-su-pass
    

    询问sudo密码(弃用,使用become)

    --ask-sudo-pass
    

    询问vault密码

    --ask-vault-pass
    

    不做任何改变; 相反,尝试预测可能发生的一些变化

    --check
    

    工作repository 中的已修改文件将被丢弃

    --clean
    

    做一个完整的克隆,而不是浅的克隆。

    --full
    

    输出匹配主机列表;不会执行任何其他操作

    --list-hosts
    

    指定文件进行连接认证

    --private-key, --key-file
    

    playbook完成后清除检出

    --purge
    

    指定仅传递给scp的额外参数(例如-l)

    --scp-extra-args <SCP_EXTRA_ARGS>
    

    指定仅传递给sftp的额外参数(例如-f,-l)

    --sftp-extra-args <SFTP_EXTRA_ARGS>
    

    指定传递给sftp / scp / ssh的公共参数(例如ProxyCommand)

    --ssh-common-args <SSH_COMMON_ARGS>
    

    仅运行其标签与这些值不匹配的play和tasks

    --skip-tags
    

    指定仅传递给ssh的额外参数(例如-R)

    --ssh-extra-args <SSH_EXTRA_ARGS>
    

    子模块将跟踪最新的更改。这相当于为git子模块更新指定-remote标志

    --track-subs
    

    使用vault标识

    --vault-id
    

    vault密码文件

    --vault-password-file
    

    验证签出提交的GPG签名,如果失败则中止运行playbook。这需要相应的VCS模块来支持这种操作

    --verify-commit
    

    版本号

    --version
    

    指定检出行为为branch/tag/commit,默认为repository 模块的行为

    -C <CHECKOUT>, --checkout <CHECKOUT>
    

    询问become密码

    -K, --ask-become-pass
    

    将冒号分隔的路径预先添加到模块库 (默认值=[u’/home/jenkins/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’])

    -M, --module-path
    

    以秒为单位覆盖连接超时(默认值=10)

    -T <TIMEOUT>, --timeout <TIMEOUT>
    

    playbook repository的url

    -U <URL>, --url <URL>
    

    连接类型(默认值=smart)

    -c <CONNECTION>, --connection <CONNECTION>
    

    检出repository 目标目录

    -d <DEST>, --directory <DEST>
    

    设置额外变量为key=value或者json、yaml,如果文件名预置为@

    -e, --extra-vars
    

    即使无法更新存储库,也要运行playbook

    -f, --force
    

    显示帮助信息

    -h, --help
    

    指定inventory主机路径或逗号分隔的主机列表。--inventory-file已弃用

    -i, --inventory, --inventory-file
    

    询问连接密码

    -k, --ask-pass
    

    进一步限制所选主机为额外模式

    -l <SUBSET>, --limit <SUBSET>
    

    Repository 模块名称,ansible将用于检出存储库。选择是('git','subversion','hg','bzr')。默认是git。

    -m <MODULE_NAME>, --module-name <MODULE_NAME>
    

    如果存储库已更新,则运行playbook

    -o, --only-if-changed
    

    在开始之前以随机间隔(在0到n秒之间)休眠。这是分散git请求的有用方法

    -s <SLEEP>, --sleep <SLEEP>
    

    仅运行使用这些值标记的play和tasks

    -t, --tags
    

    设置连接用户(默认值=None)

    -u <REMOTE_USER>, --user <REMOTE_USER>
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    ansible-vault命令

    范例

    ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]
    

    说明

    可以加密Ansible使用的任何结构化数据文件。这可以包括group_vars/或host_vars/ inventory变量,由include_vars或vars_files加载的变量,或使用-e @file.yml或-e @file.json在ansible-playbook命令行上传递的变量文件。角色变量和默认值也包括在内。

    因为Ansible tasks,handlers和其他objects 都是数据,这些也可以用Vault加密。如果您不想公开正在使用的变量,可以将单个任务文件保持为完全加密。

    当前对所有你想一起使用的采用vault的密码必须一样。

    选项

    询问vault密码

    --ask-vault-pass
    

    用于秘钥更新采用新的vault标识

    --new-vault-id <NEW_VAULT_ID>
    

    用于秘钥更新的新vault密码文件

    --new-vault-password-file
    

    使用vault标识

    --vault-id
    

    vault密码文件

    --vault-password-file
    

    版本号

    --version
    

    帮助信息

    -h, --help
    

    详细模式(-vvv表示更多,-vvvv表示启用连接调试)

    -v, --verbose
    

    动作

    encrypt

    使用提供的vault秘密加密指定文件。

    用于加密的vault标识,(如果提供了更多的vault-id,则需要)

    --encrypt-vault-id <ENCRYPT_VAULT_ID>
    

    加密或解密的输出文件名,使用 - 用于标准输出

    --output
    
    rekey

    使用新密码重新加密存储文件,需要先前的密码

    用于加密的vault ID(如果提供了更多的vault-id,则需要)

    --encrypt-vault-id <ENCRYPT_VAULT_ID>
    
    encrypt_string

    使用提供的vault加密指定字符串。

    用于加密的vault标识,(如果提供了更多的vault-id,则需要)

    --encrypt-vault-id <ENCRYPT_VAULT_ID>
    

    加密或解密的输出文件名,使用 - 用于标准输出

    --output
    

    指定stdin的变量名称

    --stdin-name <ENCRYPT_STRING_STDIN_NAME>
    

    指定变量名称

    -n, --name
    

    提示字符串加密

    -p, --prompt
    
    edit

    在编辑器中打开并解密现有的存储文件,关闭后将再次加密

    用于加密的vault标识,(如果提供了更多的vault-id,则需要)

    --encrypt-vault-id <ENCRYPT_VAULT_ID>
    
    create

    在编辑器中创建并打开一个文件,该文件将在关闭时使用提供的vault加密

    decrypt

    使用提供的vault解密指定字符串。

    加密或解密的输出文件名,使用 - 用于标准输出

    --output
    
    view

    打开、解密并查看一个已存在vault并使用寻呼使用提供vault密码

    环境

    可以指定以下环境变量。

    ANSIBLE_CONFIG-覆盖默认的ansible配置文件

    对于ansible.cfg中的大多数选项,还有更多选项可用。

    配置文件

    /etc/ansible/ansible.cfg 配置文件,如果存在则使用。

    ~/.ansible.cfg 用户配置文件,如果存在则覆盖默认配置。

    相关文章

      网友评论

        本文标题:02-Ansible命令行工具

        本文链接:https://www.haomeiwen.com/subject/ftsziftx.html