ansible 常用模块介绍
1. centos 上安装ansible
yum install epel-release -y
yum install ansible -y
2. 配置文件
ansible.cfg hosts roles
ansible.cfg ansible 配置文件
hosts 主机组的文件
roles 定义角色的
需要配置ssh 免登陆
ssh-copy-id 10.39.15.14
查看有哪些模块
ansible-doc -l 查看有哪些模块
ansible-doc --help 查看命令帮助
使用命令帮助
1. ping 模块
ansible-doc -s ping
ansible-doc -v ping
2. shell 模块
ansible-doc -v shell
ansible test -m shell -a "uptime"
3. command 模块
ansible test -m command -a "df -h"
ansible test -m command -a "touch /tmp/a.txt"
4. copy 模块
ansible-doc -v copy
ansible all -m copy -a "src=/etc/hosts dest=/tmp/hosts mode=600 owner=elasticsearch"
mode 是文件权限
owner 是用户
5. file 模块
使用file 创建文件
ansible all -m file -a "path=/tmp/abcd state=touch"
使用file 删除文件
ansible all -m file -a "path=/tmp/abcd state=absent"
synchronizw 模块(rsync)
模块参数:
archive 递推标志,权限,时间等待
delete=yes 使两边的内容一样(即以推送为主)
compress=yes 开启压缩(默认yes)
ansible all -m synchronize -a "src=~/prometheus.yml dest=/tmp"
拉取远端的/etc/hosts 到本地的/tmp
ansible all -m synchronize -a "compress=yes group=yes links=yes delete=yes mode=pull src=/etc/hosts dest=/tmp"
script 模块
远程执行脚本
ansible all -m script -a "/tmp/a.sh"
user 模块
创建用户密码加密
echo "xingxing" | openssl passwd -1 -stdin
创建用户
ansible all -m user -a "name=xx password='$1$UxbCY0m7$EeyH442sFvwcTR/UudaT2' uid=2000"
删除用户
ansible all -m user -a "name=xx password='$1$UxbCY0m7$EeyH442sFvwcTR/UudaT2' uid=2000 state=absent"
修改uid
ansible all -m user -a "name=xx uid=3000"
ansible all -m user -a "name=xx remove=yes state=absent"
创建用户dba
ansible all -m user -a "name=dba shell=/bin/bash append=yes home=/home/dba state=present"
删除用户
ansible all -m user -a "name=dba remove=yes state=absent"
cron 计划任务
ansible all -m cron -a "name='add ntpdata sync' minute=*/2 job='ntpdata cn.pool.ntp.org' state=present"
删除计划
ansible all -m cron -a 'name="add ntpdata sync" state=absent'
yum 模块
ansible all -m yum -a "name=httpd state=latest"
启动
ansible-doc -s service
开机启动
ansible all -m service -a "name=httpd enable=yes state=started"
客户端执行命令
2.1.1 拷贝秘钥
ansible test -m copy -a 'src=~/.ssh/id_rsa.pub dest=~' -k
ansible test -a 'ls' -k
ansible test -m shell -a 'mkdir -p .ssh'
ansible test -m shell -a 'cat ~/id_rsa.pub >> ~/.ssh/authorized_keys' -k
ansible test -m shell -a 'cat .ssh/authorized_keys'
方法二:
ansible all -m authorized_key -a "user=ubuntu key='{{ lookup('file','~/.ssh/id_rsa.pub')}}' path='/ubuntu/.ssh/authorized_keys' manage_dir=no" --ask-pass -c paramiko