- vi /etc/ansible/ansible.cfg
- 去掉注释:
- remote_tmp = ~/.ansible/tmp
- ##会优先读取当前目录下的hosts
- 14行
- inventory = /etc/ansible/hosts
- 62行
- host_key_checking = False
- 102行
- log_path = /var/log/ansible.log
-
- ansible(使用密码本访问)
- 323行
- [privilege_escalation]
- become=True
- become_method=sudo
- become_user=root
- become_ask_pass=False
-
- 432行
- #连接加速配置
- accelerate_port = 10000
- 444行
- accelerate_multi_key = yes
ansible免密登陆的小技巧
- 修改密码位置
- vi /etc/ansible/host
- 最后添加
- [app1]
- 10.1.1.1
- [app:children]
- app1
- [app:vars]
- ansible_ssh_user="online"
- ansible_ssh_pass="*****"
- ansible_ssh_port="22"
- #ansible使用sudo权限执行命令
- ansible_become_pass="*****"
客户端配置online使用sudo的权限
usermod -G wheel online
案例:执行ansible命令
- [root@ydapp18 ansible]# ansible 10.0.3.2 -m shell -a 'ls -l /root/' -become=true
- 10.0.3.2 | SUCCESS | rc=0 >>
- total 16
- drwxr-xr-x. 2 root root 6 Feb 20 21:49 a
- -rw-------. 1 root root 1727 Feb 2 21:30 anaconda-ks.cfg
- -rwxr-xr-x. 1 root root 11448 Feb 20 23:07 config_centos73.sh
- drwxr-x--- 2 root root 6 Mar 5 20:59 test
常用模块:
#在受控主机的/tmp目录下新建一个目录test
[root@ansible ~]# ansible 10.1.1.1 -a 'mkdir /tmp/test'
#使用shell模块在受控机上执行受控机上的脚本
ansible 10.1.1.1 -m shell -a '/bin/bash /scripts/*.sh &> /tmp/test'
#在ansible主机上使用yum模块在受控机上安装vim
ansible 110.1.1.1 -m yum -a 'name=vim state=present'
#copy模块用于复制文件至远程受控机
src:要复制到远程主机的源文件路径,可以是绝对路径,也可以是相对路径,如果路径是一个目录,将递归复制。在这种情况下,如果路径使用"/“结尾,则只复制目录里的内容,如果没有使用”/"来结尾,则将包含目录在内整个内容全部复制,类似于rsync
dest:远程主机的目标路径,必须是一个绝对路径,如果源文件是一个目录,那么,dest指向的也必须是一个目录。
ansible 10.1.1.1-m copy -a 'src=/usr/local/Java-jdk-8u351-linux-x64.tar.gz dest=/usr/local'
#user模块用于管理受控机的用户帐号,在受控机上添加一个系统用户,用户名为mysql,uid为306,设置其shell为/sbin/nologin,无家目录
ansible 10.1.1.1 -m user -a 'name=mysql uid=306 system=yes create_home=no shell=/sbin/nologin state=present'
#service模块用于管理受控机上的服务
ansible 10.1.1.1 -m shell -a 'systemctl is-active vsftpd'
#启动受控机上的vsftpd服务
ansible 10.1.1.1 -m systemd -a 'name=vsftpd enabled=yes state=started'
#在app1组中的全部主机上创建一个名为test的文件
ansible app1 -m file -a 'path=/tmp/test state=touch'