ansible 命令

[root@localhost~]# ansible

Usage: ansible <host-pattern> [options]

ansible <host-pattern> [-f forks] [-m module_name][-a args] [options]

#常用格式

ansible <host-pattern> [-f forks] [-m module] [-aargs]

host-pattern # 可以是all或者配置文件中的主机组名

-f forks # 指定并行处理的进程数

-m module # 指定使用的模块默认模块为command

-a args # 指定模块的参数

#查看各模块

ansible-doc [options] [modules]

# 主要选项有

-l--list # 列出可用的模块

-s--snippet #显示指定模块的简略使用方法

 

 

//all所有/etc/ansible/hosts定义主机/目录下bin并且统计多少行

[root@HA2 tmp]# ansible all -a 'ls / ' | grep  -o "^bin" |wc -l

[root@node110 ansible]# ansible all -mcommand -a 'date'

192.168.2.120 | SUCCESS | rc=0 >>          #SUCCESS执行成功,rc=0返回值是0

Fri Apr 14 11:05:11 CST 2017

 

 

 

批量执行

[root@node110ansible]# ansible all -m ping

bruce身份ping所有主机

ansible all -m ping-u bruce

bruce用户以root身份ping

ansible all -m ping-u bruce --sudo

bruce 用户 sudo batman 用户 ping

ansible all -m ping-u bruce --sudo --sudo-user batman

在所有节点上执行命令

ansible all -a"/bin/echo hello"

 

Options:

  -a MODULE_ARGS, --args=MODULE_ARGS    模块的参数,如果执行默认COMMAND的模块即是命令参数,date,"pwd"等等

                        module arguments    模块参数

  -k, --ask-pass        ask for SSH password  登录密码提示输入SSH密码而不是假设基于密钥的验证

  --ask-su-pass        ask for supassword    su切换密码

  -K, --ask-sudo-pass  ask for sudopassword  提示密码使用sudo,sudo表示提权操作

  --ask-vault-pass     ask for vaultpassword

  -B SECONDS, --background=SECONDS     后台运行超时时间

                        run asynchronously,failing after X seconds

                        (default=N/A)

  -C, --check          don't make any changes; instead, try topredict some    只是测试一下会改变什么内容不会真正去执行;相反,试图预测一些可能发生的变化

                        of the changes that mayoccur

  -c CONNECTION, --connection=CONNECTION   连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。

                        connection type to use(default=smart)

  -f FORKS, --forks=FORKS   并行任务数。NUM被指定为一个整数,默认是5

                        specify number ofparallel processes to use

                        (default=5)

  -h, --help            show this help message and exit  打开帮助文档API

  -i INVENTORY,--inventory-file=INVENTORY    指定库存主机文件的路径,默认为/etc/ansible/hosts

                        specify inventory hostfile

                        (default=/etc/ansible/hosts)

  -l SUBSET, --limit=SUBSET    进一步限制所选主机/组模式  --limit=192.168.91.135 只对这个ip执行

                        further limit selectedhosts to an additional pattern

  --list-hosts          outputs a list ofmatching hosts; does not execute

                        anything else

  -m MODULE_NAME,--module-name=MODULE_NAME   执行模块的名字,默认使用command 模块,所以如果是只执行单一命令可以不用 -m参数

                        module name to execute(default=command)

  -M MODULE_PATH,--module-path=MODULE_PATH    要执行的模块的路径,默认为/usr/share/ansible/

                        specify path(s) tomodule library

                        (default=/usr/share/ansible/)

  -o, --one-line        condenseoutput      压缩输出,摘要输出.尝试一切都在一行上输出。

  -P POLL_INTERVAL,--poll=POLL_INTERVAL    调查背景工作每隔数秒。需要- b

                        set the pollinterval if using-B (default=15)

  --private-key=PRIVATE_KEY_FILE    私钥路径,使用这个文件来验证连接

                        use this file to authenticate the connection

  -S, --su              run operations with su    用 su 命令

  -R SU_USER, --su-user=SU_USER      指定SU的用户,默认是root用户

                        run operations with su as this user (default=root)

  -s, --sudo            run operations with sudo(nopasswd)   

  -U SUDO_USER, --sudo-user=SUDO_USER    sudo到哪个用户,默认为root 

                        desired sudo user (default=root)

  -T TIMEOUT, --timeout=TIMEOUT    指定SSH默认超时时间,  默认是10S

                        override the SSHtimeout in seconds (default=10)

  -t TREE, --tree=TREE  log output to this directory     将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。

  -u REMOTE_USER, --user=REMOTE_USER    远程用户, 默认是root用户

                        connect as this user (default=root)

  --vault-password-file=VAULT_PASSWORD_FILE 

                        vault password file

  -v, --verbose         verbose mode (-vvv for more, -vvvv toenable    详细信息

                        connection debugging)

  --version             show program's version number and exit   输出ansible的版本

  特殊说明:

    1.ansible是指令核心部分,其主要用于执行ad-hoc(点对点)命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。

    2. 默认使用的模块是可以在ansible.cfg 中进行修改的。/etc/ansible/ansible.cfg

  举例:    

[root@localhost ~]# ansible 192.168.91.137 -a 'pwd'

192.168.91.137 | success | rc=0 >>

/root

 

[root@361way.com ~]# ansible 192.168.0.102 -a'date'

.168.0.102 | success | rc=0 >>

Tue May 12 22:57:24 CST 2015

 

不过默认使用的模块是可以在ansible.cfg 中进行修改的。ansible命令下的参数部分解释如下:

 

参数:

  -a 'Arguments', --args='Arguments' 命令行参数

  -m NAME, --module-name=NAME 执行模块的名字,默认使用command 模块,所以如果是只执行单一命令可以不用 -m参数

  -i PATH, --inventory=PATH 指定库存主机文件的路径,默认为/etc/ansible/hosts.

  -u Username, --user=Username 执行用户,使用这个远程用户名而不是当前用户

  -U --sud-user=SUDO_User  sudo到哪个用户,默认为 root

  -k --ask-pass 登录密码,提示输入SSH密码而不是假设基于密钥的验证

  -K --ask-sudo-pass 提示密码使用sudo

  -s --sudo sudo运行

  -S --su 用 su 命令

  -l --list 显示所支持的所有模块

  -s --snippet 指定模块显示剧本片段

  -f --forks=NUM 并行任务数。NUM被指定为一个整数,默认是5。 #ansible testhosts -a"/sbin/reboot" -f 10 重启testhosts组的所有机器,每次重启10台

  --private-key=PRIVATE_KEY_FILE 私钥路径,使用这个文件来验证连接

  -v --verbose 详细信息

  all  针对hosts定义的所有主机执行

  -M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/

  --list-hosts 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该playbook 文件

  -o --one-line 压缩输出,摘要输出.尝试一切都在一行上输出。

  -t Directory, --tree=Directory 将内容保存在该输出目录,结果保存在一个文件中在每台主机上。

  -B 后台运行超时时间

  -P 调查后台程序时间

  -T Seconds, --timeout=Seconds 时间,单位秒s

  -P NUM, --poll=NUM 调查背景工作每隔数秒。需要- b

  -c Connection, --connection=Connection  连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。

  --tags=TAGS 只执行指定标签的任务    例子:ansible-playbook test.yml--tags=copy  只执行标签为copy的那个任务

  --list-hosts 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该playbook 文件

  --list-tasks 列出所有将被执行的任务

  -C, --check 只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化

  --syntax-check 执行语法检查的剧本,但不执行它

  -l SUBSET, --limit=SUBSET 进一步限制所选主机/组模式  --limit=192.168.0.15 只对这个ip执行

  --skip-tags=SKIP_TAGS 只运行戏剧和任务不匹配这些值的标签  --skip-tags=copy_start

  -e EXTRA_VARS, --extra-vars=EXTRA_VARS  额外的变量设置为键=值或YAML / JSON

        #cat update.yml

        ---

        - hosts: {{ hosts }}

          remote_user: {{ user }}

        ..............

        #ansible-playbook update.yml--extra-vars "hosts=vipers user=admin"   传递{{hosts}}{{user}}变量,hosts可以是 ip或组名

 -l,--limit 对指定的主机/组 执行任务  --limit=192.168.0.10,192.168.0.11或 -l 192.168.0.10,192.168.0.11 只对这个2个ip执行任务

 

 

 

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS