Ad-Hoc
ad hoc 临时的,在ansible中是指需要快速执行,并且不需要保存的命令。其实就是执行简单的命令——一条命令。对于复杂的命令则为 playbook。
列出ansible支持的模块:
ansible-doc命令:
获取模块列表,及模块使用格式;
-l:获取列表
-s module_name:获取指定模块的使用信息
[root@master ~]# ansible-doc -l
[root@master ~]# ansible-doc yum
[root@master ~]# ansible-doc -s yum
执行命令
-m shell
-f 2 指定定要使用的并行进程数,默认为5个。
[root@master ~]# grep forks /etc/ansible/ansible.cfg
forks = 5
[root@master ~]# ansible all -m shell -a 'hostname' -o -f 3
192.168.2.37 | SUCCESS | rc=0 | (stdout) galera4
web1 | SUCCESS | rc=0 | (stdout) web1
web2 | SUCCESS | rc=0 | (stdout) web2
web3 | SUCCESS | rc=0 | (stdout) web3
复制文件
-m copy
ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts owner=root group=root mode=644 backup=yes' -o
backup=yes
被控制节点上如果有文件,则会先备份再拷贝:
[root@web1 ~]# cat /etc/hosts.25856.2018-02-04@14:15:43~
src=/etc/hosts //指定的是ansible机器上的文件
用户管理
用户管理
-m user
添加用户:
[root@master ~]# echo '123' | openssl passwd -1 -stdin
$1$hXe3alXf$4VGhWAbRGA6tm4NMJznSf1
[root@master ~]# ansible web1 -m user -a 'name=liudehua password="$1$hXe3alXf$4VGhWAbRGA6tm4NMJznSf1"' -o
使用变量需要用双引:
[root@master ~]# pass=`echo '1' | openssl passwd -1 -stdin`
[root@master ~]# ansible web1 -m user -a "name=liudehua password=$pass" -o
使用命令替换需要用双引:
[root@master ~]# ansible web1 -m user -a "name=liudehua password=`echo '1234' | openssl passwd -1 -stdin`" -o
删除用户:
[root@master ~]# ansible web1 -m user -a "name=liudehua state=absent" -o
软件包管理
-m yum
删除软件:
[root@master ~]# ansible web1 -m yum -a 'name=httpd state=removed'
安装软件:
[root@master ~]# ansible web1 -m yum -a 'name=httpd state=latest'
服务管理
-m service
[root@master ~]# ansible webservers -m service -a 'name=httpd state=started enabled=yes' -f 3 -o