一、Ansible 部署
1. 环境准备
ip | hostname | 备注 |
---|---|---|
10.4.7.136 | linux136 | 主控端 |
10.4.7.128 | linux128 | |
10.4.7.129 | linux129 |
2. 密钥认证
1 |
|
3. 部署 Ansible
1 | $ apt install -y ansible |
4. 配置主机清单
1 | $ cat /etc/ansible/hosts |
5. 测试
1 | $ ansible all -m ping |
- 红色:错误
- 紫色:警告
- 黄色:正常,有状态变化
- 绿色:正常
二、Ansible 常用模块
1. command
- 默认模块,仅支持简单命令,不支持管道符、反引号、大括号等特殊符号
1 | $ ansible all -a 'free -h' |
2. shell
- 与 command 类似,支持管道符等特殊符号
1 | $ ansible all -m shell -a 'cat /etc/passwd | grep root' |
3. script
- 将主控端脚本传输到被控端执行(不保留文件)
1 | $ cat /root/test.sh |
4. file
- 管理⽂件、⽬录、软连接
1 | # 创建目录/文件/软链接 |
5. lineinfile
- 操作文件
1 | # 如果匹配到行则修改,否则添加到末尾(如果没匹配到不想做修改,可加参数`backrefs=yes`) |
6. copy
- 将主控端文件传输到被控端
1 | # 拷贝文件并指定权限 |
7. get_url
- 从指定 URL 下载文件到本地
1 | $ ansible all -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes" |
8. systemd
- 系统服务管理(CentOS 6 及以下可用 service 模块管理,用法差不多)
1 | # 关闭防火墙 |
9. yum_repository
- 管理 yum 源
1 | # 添加Nginx源 |
10. yum
- 安装/移除软件
1 | $ ansible all -m yum -a 'name=lrzsz,aalib state=installed' |
11. mount
- 分区挂载
1 | $ ansible all -m mount -a "fstype=ext4 src=/dev/sd0 path=/mnt/data opts=ro state=present" |
state | 描述 |
---|---|
absent | 卸载并修改 /etc/fstab |
unmounted | 卸载但不修改 /etc/fstab |
present | 仅修改 /etc/fstab 但不挂载 |
mounted | 挂载并修改 /etc/fstab |
remounted | 重新挂载 |
12. cron
- 定时任务
1 | # */2 * * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null |
13. user
- 用户管理
1 | $ ansible all -m user -a 'name=tengine uid=10086 shell=/sbin/nologin create_home=no state=present' |