01Ansible介绍与安装
1. 介绍Ansible
1.1什么是Ansible
Ansible是一款自动化运维工具,基于Python开发,拥有众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible基于paramiko(python中作为远程控制用的模块)工具开发而成,Ansible基于模块工作,本身没有批量部署的能力,真正有能力的是Ansible里所运行的模块,ansible只是提供一种框架。ansible不需要再远程主机上安装client/agents,因为它们是基于ssh和远程主机通讯的
1.2 ansible特点
- 部署简单,只需在主控制端部署Ansible环境,被控节点无需操作
- 默认使用SSH协议对设备进行管理
- 配置简单、功能 强大、扩展性强
- 提供一个功能强大、操作性强的web管理界面和rest apl接口—awx平台
1.3 Ansible优点
- 跨平台支持:Ansible提供Linux、windows、Unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
- 人类可读的自动化: Ansible playbook采用yaml文本文件编写,易于阅读,有助于理解
- 完美描述应用:可以通过Ansible playbook进行每种更改 ,并描述和记录应用环境的每一个方面
- 轻松管理版本控制:Ansible playbook和项目是纯文本。他们可以视为源代码,放在现有版本控制系统中
- 支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
- 编排可与其他系统轻松集成:能够利用环境中现有的HP SA、Puppet、jenkins、红帽卫星和其他系统,并且集成Ansible工作流中
Ansible架构图:
1.4Ansible的主要模块有
- Ansible:核心程序
- hostlnventory:记录由ansible管理的主机信息,包括端口,密码以及ip等
- playbook:剧本,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成
- coremodules:核心模块,主要通过核心模块来完成管理任务
- custommodules:自定义模块,完成核心模块无法完成的功能,支持多种语言
- connectionplugins:连接插件,ansible和host通信使用
2. 安装Ansible
2.1 控制节点
ansible易于安装,ansible软件只需要安装到要运行它的一个(或多个)控制节点上。由ansible管理的主机不需要安装ansible。 控制节点应是Linux或Unix系统,不支持将windows用作控制节点,但可以是受控节点
2.2 受控节点
ansible的优点是受控节点不需要安装特殊代理,。ansible控制节点使用标准的网络协议连接受管主机,从而确保系统处于指定的状态 受控主机可能要满足一些要求取决于控制节点连接他们的方式以及他们要运行的模块
2.3 安装
//在redhat8中我们默认带有python3,所以只需要输入
yum -y install ansible
完成安装 //如果系统仓库中没有ansible则执行以下命令,再安装
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm //将epel仓库启用
//查看版本
[root@my ~]# ansible --version
ansible 2.9.23
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Dec 5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
[root@my ~]# ansible localhost -m ping
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
//创建用户
[root@my ~]# ansible localhost -m user -a "name=my"
localhost | SUCCESS => {
"append": false,
"changed": false,
"comment": "",
"group": 1002,
"home": "/home/my",
"move_home": false,
"name": "my",
"shell": "/bin/bash",
"state": "present",
"uid": 1002
}
[root@my ~]#
|