所在位置:
- 首页
- 正文
ansible的ad-hoc模式
Ansible
系统由控制主机对被管节点的操作方式可分为两类,即 ad-hoc
和 playbook
,ad-hoc
模式使用单个模块,支持批量执行单条命令,而 playbook
就是通过组合多条ad-hoc操作的配置文件
ad-hoc
的格式为:
ansible 主机或组 -m 模块名 -a '模块参数' ansible参数
下面来简单说一下这些格式的一些选项:
ansible 模块
显示所有 ansible 模块
ansible-doc -l
查看某个模块的帮助
ansible-doc 模块名
查看某个模块有哪些模块参数
ansible-doc -s 模块名
模块的分类
command 模块,如果不写,默认是这个模块
shell 模块,shell 模块和 command 模块都可以执行命令,但 command 模块不能带
参数
文件管理模块,比如 copy、file、stat 等命令
软件包管理模块,比如 apt、yum 、pacman、homebrew 、pip、npm、bower 等命令
服务管理模块,比如 service、iptables、mount 等命令
用户管理,比如 user 等命令
版本控制管理模块,比如 git、hg、subversion 等命令
监控管理模块,比如 monit、nagios等命令
ansible参数
指定资源清单,默认 /etc/ansible/hosts
,使用 -i 参数
ansible 主机或组 -m 模块名 -a '模块参数' -i 资源清单路径
并发线程数,默认5个线程,使用 -f 参数
ansible 主机或组 -m 模块名 -a '模块参数' -f 进程数
指定使用的模块,使用 -m 参数
ansible 主机或组 -m 模块名 -a '模块参数'
输出信息指定目录下,结果文件以远程主机名命名,使用 -t 参数
ansible 主机或组 -m 模块名 -a '模块参数' -t 目录
标准输出至一行,使用 -o 参数
ansible 主机或组 -m 模块名 -a '模块参数' -o
模块参数,使用 -a 参数
ansible 主机或组 -m 模块名 -a '模块参数'
输出详细的执行过程信息,使用 -v 参数
,-vvv可得到所有执行过程信息
ansible 主机或组 -m 模块名 -a '模块参数' -v
指定远程主机以哪个用户运行命令,使用 -u 参数
ansible 主机或组 -m 模块名 -a '模块参数' -u 远程用户名
列出符合条件的主机列表,不执行任何其他命令,使用 --list-hosts
ansible 主机或组 -m 模块名 -a '模块参数' --list-hosts
指定连接远程主机的最大超时,使用 -T 参数
ansible 主机或组 -m 模块名 -a '模块参数' -T 超时时间
后台执行命令,超多少秒后杀掉正在执行的任务,使用 -B 参数
ansible 主机或组 -m 模块名 -a '模块参数' -B 时间
指定密钥文件,使用 --private-key
ansible 主机或组 -m 模块名 -a '模块参数' --private-key=密钥文件
Linux系统下的sudo命令,使用 -s参数
ansible 主机或组 -m 模块名 -a '模块参数' -s
用户的密码(与 -s 一起使用)
ansible 主机或组 -m 模块名 -a '模块参数' -K
举例
/etc/ansible/hosts
的内容
[test_group1]
11.11.11.11 ansible_ssh_user=user1 ansible_ssh_pass=password
[test_group2]
22.22.22.22
[dbserver:children]
test_group1
test_group2
查看 server1 的主机是否ping得通
ansible server1 -m ping
使用 test 用户查看 dbserver 的所有主机的 home 目录
ansible dbserver -m shell -a 'ls /home' -u test
使用 test 用户复制当前的 hosts 文件到 dbserver 组中
ansible dbserver -m copy -a "src=hosts dest=/home/test owner=test group=test" -f 5 -u test
使用普通的 test 用户在 dbserver 组中安装 nginx, -s 和 -K 就是暂时切换到 root 来操作
ansible dbserver -m yum -a 'name=nginx state=present' -f 5 -o -u test -s -K
在 dbserver 组中,启动 nginx
ansible dbserver -m service -a 'name=nginx state=started' -f 5 -o -u test -s -K
在 dbserver 组中添中一个用 user1
使用 openssl 加密 user1
echo user1 | openssl passwd -1 -stdin # 输出 $1$nznZlfwK$y6ZNpebMGXSXsmeW7Qb1Q.
添加用户 user1
ansible dbserver -m user -a 'name=user1 password="$1$nznZlfwK$y6ZNpebMGXSXsmeW7Qb1Q."' -f 5 -o -u test -s -K
注意:
password的内容要双引号
【上一篇】ansible的安装和基本用法
【下一篇】ansible的playbook模式