Ansible笔记-1
Ansible的学习笔记。
Ansible管理方式是资源在目标主机上,定义所期望的目标状态的方式;每一个操作必须是幂等的(可重复操作但结果不变的)。ansible采用ssh链接所管理的服务器,因此具有agentless的优势。
Ansible的安装
Ansible在Redhat的仓库中就有二进制包,直接dnf或yum安装就可以了。
1 | [root@localhost Liarlee]$ yum install -y Ansible |
Ansible的配置文件
Ansible的配置文件常用的有:
- /etc/ansible/ansible.cfg Ansible的配置文件
- /etc/ansible/hosts Ansible允许控制的主机列表,可在hosts文件中对服务器进行分组
Ansible的组件
- ansible
- ansible-playbook
- ansible-doc
Ansible的配置和使用
Ansible命令模式
ansible [HOST_PARTTEN] -m [MODUELS] -a “[ARGS]” -f [Forks] -C -u [USERNAME] -c [CONNTECTION]
基于密钥认证ansible
ansible支持使用ssh用户命名密码的认证方式,也支持使用ssh密钥认证的方式进行链接。ssh密钥的方式可以保证安全性,同时免去输入密码的麻烦。
- 生成ansible的密钥
1
[root@localhost Liarlee]$ ssh-keygen -t rsa -P ""
- 复制ansible的公钥到需要连接控制的host上
1
2[root@localhost Liarlee]$ ssh-copy-id -i ~/.ssh/id-rsa.pub root@[host1-IP]
[root@localhost Liarlee]$ ssh-copy-id -i ~/.ssh/id-rsa.pub root@[host2-IP] - 在ansible的hosts文件中记录需要控制的主机名或者IP
1
2[root@localhost Liarlee]$ echo "[host1-IP]" >> /etc/ansible/hosts
[root@localhost Liarlee]$ echo "[host2-IP]" >> /etc/ansible/hosts - 使用ansible进行控制测试
1
2
3[root@localhost Liarlee]$ ansible all -m ping # 进行连通测试
[root@localhost Liarlee]$ ansible all -m ping --list-hosts # 列举所有受影响的主机,但是不执行操作
[root@localhost Liarlee]$ ansible all -m ping -C # 进行测试,但是不对控制的主机作更改
Ansible使用示例
Ansible默认将所有的操作通过模块的方式定义,这里列举了一些常用的模块:
Ansible管理查询命令
使用ansible-doc命令来进行模块的文档查看, /var/log/messages 中会记录操作日志。
1 | [root@localhost Liarlee]$ ansible-doc -l # 列举所有当前可用的模块和简单说明 |
User模块
设定主机的用户状态,对用户进行创建删除,更改信息以及参数。
1 | # 设置所有主机创建用户user,设置内容有uid,groups,shell |
Group模块
设置主机的组状态,对组状态进行编辑。
1 | # 控制所有主机创建组testgrp,设置内容有gid,非系统组 |
Copy模块
从本地复制内容到控制的所有主机,指定源地址和目的地址。
1 | # 复制本地/etc/fstab到所有主机的/tmp/fstab.ansible,同时设置权限为755 |
Fetch模块
可从远程主机复制文件到本地。
1 | # 从某个主机复制文件到本地目录,文件不存在退出 |
Command模块
command模块不调用shell去解析命令,仅仅读取第一个命令进行简单执行,因此不支持管道传递参数。
1 | # 在所有主机上执行ifconfig |
Shell模块
使用shell执行传递的命令,支持管道传递参数
1 | # 执行shell命令修改用户的密码 |
File模块
用于设定文件的状态以及属性
1 | # 在所有主机上建立目录 |
Cron模块
用于设置计划任务
1 | # 设置每三分钟运行一次同步时间的脚本 |
Yum模块
用于调用yum进行软件包的安装卸载等,定义主机安装软件包的状态
1 | # 在所有主机安装nginx |
Service模块
用于定义管理目标主机的服务状态
1 | # 在所有的主机上启动nginx服务 |
Scripts模块
用于在所有主机上执行设置好的脚本
1 | # 在所有的主机上执行test.sh |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Liarlee's Notebook!


