1.简介
- Ansible 溯源
Ansible出自科幻小说,是虚构的一种以超光速传递信息的通信装置。 - Ansible 是什么?
Ansible是一个模块化的自动运维工具,基于python语言实现,由Paramiko,PyYAML和Jinjia2三个关键模块组成。Ansible支持多节点发布、远程任务执行,默认使用SSH进行远程连接。 - Ansible 基本架构
Ansible基本架构的组成:
Host Inventory:主机清单,定义ansible管理的主机
Playbooks:剧本,ansible的任务配置文件,将多个任务定义在剧本中,ansible自动执行
Ansible:核心
Core Module:核心模块,ansible自带
Custom Module:扩展模块,如果核心模块不足以完成某种功能,可以添加扩展模块
Plugins:完成模块功能的补充
Connection Plugins:ansible默认使用ssh连接到各个主机,但也支持别的连接方法
2.Ansible 安装
安装方式主要有以下4种
- 方法1:yum安装
yum install epel-release
yum install ansible
- 方法2:pip安装
pip install ansible
- 方法3:brew安装
brew install ansible
- 方法4:源码安装(mac推荐)
git clone https://github.com/ansible/ansible.git
cd ansible
sudo python setup.py install
安装完成后,使用ansible --version
检查是否安装成功
跳出版本信息即安装成功,如下图
参考图
3.配置SSH密钥(被控主机免密连接)
测试环境: CentOS Linux release 7.7.1908 (Core)
测试在本地进行,即控制主机和被控主机都是localhost
- 生成密钥文件
ssh-keygen
ssh-keygen
后不加参数,默认生成rsa型密钥文件,出现如下框框则代表密钥生成成功。密钥文件在/root/.ssh
目录下。
参考图
- 免密登录
生成密钥文件之后输入,如下命令,期间需要输入一次密码
ssh-copy-id localhost
参考图
在进行ssh localhost
时,就不再需要输入密码,直接可以进入
4. ansible配置文件
- 修改ansible.cfg 配置文件
Ansible配置文件位置/etc/ansible/ansible.cfg
配置文件修改内容- 去掉
host_key_checking = False
前的#
号,禁用每次执行ansible命令检查ssh key host - 去掉
log_path = /var/log/ansible.log
前的#
号,开启日志记录
- 去掉
5.测试
5.1 测试样例1
在/etc/ansible/hosts
文件末尾,添加localhost,保存文件退出
参考图
输入如下命令进行连通性测试
ansible all -m ping
测试结果如下:
5.2 测试样例2
该样例实现一个ansible
版的Hello World!
创建一个新目录,在该目录下创建inventory
和all.yml
两个文件
inventory
文件内容
[all]
localhost
参考图
all.yml
文件内容
---
- name: debug Hello World
hosts: all
gather_facts: no
tasks:
- name: debug
debug:
参考图
- 运行
ansible-playbook -i inventory all.yml
输出结果见下图
msg中输出Hello World!