ansible
一、安装
1、安装wget
yum install -y wget
2、下载epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、下载安装ansible
yum install -y ansible
二、ansible 的命令格式
ansible -h 查看 ansible的参数
-a MODULE_ARGS 模块参数
-C --check 检查语法
-f FORKS 并发
--list-hosts 列出主机列表
-m MODULE_NAME 模块名字
三、ssh 认证方式
- 密码认证
- 密钥认证
ssh-keygen 生成密钥对(公钥,私钥)
ssh-copy-id + 远程主机地址 复制公钥到远程主机
四、基本命令
ping 走的 是ICMP协议
ansible 中的ping 走的是ssh协议,所以当你ssh没有连接成功时,是无法ping通的,会报如下警告
此时需要在 /etc/ansible/hosts文件下将被控制主机的ip地址写进去
再 ping,成功
还可以将远程主机ip写入一个自定义组里边,一台主机可以作为多个组的成员。
此时直接ping 组名也能ping通
anans
ansible all -m ping ping所有远程主机
ansible 'web:!db' -m ping 在web组 中 但是不再db组中的远程主机
ansible 'web:&db' -m ping web 和 db 的交集
ansible'web:db' -m ping web 和 db 的并集
4.1 command
ansible web -a 'ls' # 查看当前组下的所有文件ansi
ansible web -a 'chdir=/tmp pwd' # 先切换目录,在执行相应的命令,一般情况下在编译时候使用
ansible web -a 'creates=/tmp pwd' # 如果creates的文件存在,则不执行后面的操作
ansible web -a 'removes=/tmp pwd' # 如果removes的文件存在,则执行后面的操作
ansible web -a 'removes=/tmp mkdir /data' # 会执行后面的mkdir命令
ansible web -a 'creates=/data2 mkdir /data2' #会执行后面的mkdir命令
ansible web -m command -a 'useradd haha' # 创建一个haha的用户
查看用户是否被创建成功
tail -1 /etc/passwd
tail -1 /etc/shadow
id + 用户名
4.2 shell
ansible web -m shell -a echo '1' | passwd --stdin alex 非交互式设置密码 给haha 用户设置一个密码为1
这里不能用command ,因为command 不支持 < ,> , | , &, $ 这些特殊字符,如果遇到了使用shell
要先确保改主机中有这个文件
ansible 192.168.12.25 -m shell -a '/root/a.sh' 执行shell脚本,前提是脚本有可执行权限
chmod +x a.sh 给a.sh文件添加可执行权限
ansible 192.168.12.25 -m shell -a '/root/a.py' 执行python脚本,前提是脚本有可执行权限
4.3 script
ansible web -m script -a '/root/m.sh' 执行管控机上的m.sh文件,将脚本文件的命令运行在web组下的被掌控机上。
ansible web -m script -a 'creates=/root/a.sh /root/m.sh' 查看被掌控机上的文件是否存在 ,查看被掌控机上是否有a.sh文件,存在就不执行。
4.4 copy
dest 目标地址
src 源地址
ansible web -m copy -a 'dest=/tmp/a.sh src=/root/' 复制文件到远程主机,将a.sh文件 复制到 web组下的所有被掌控机的root下
ansible web -m copy -a 'dest=/tmp/a.sh src=/root/m.sh'