ansible简介
Ansible目前是运维自动化工具中最简单、容易上手的一款优秀软件,能够用来管理各种资源,用户可以使用Ansible自动部署应用程序,以此实现IT基础架构的全面部署。
Ansible基于SSH远程会话协议,不需要客户端程序,只要知道受管主机的账号密码,就能直接用SSH协议进行远程控制,因此使用起来优势明显。
Ansible服务专用术语对照表
术语 | 中文叫法 | 含义 |
Control node | 控制节点 | 指的是安装了Ansible服务的主机,也被称为Ansible控制端,主要是用来发布运行任务、调用功能模块,对其他主机进行批量控制。 |
Managed nodes | 受控节点 | 指的是被Ansible服务所管理的主机,也被称为受控主机或客户端,是模块命令的被执行对象。 |
Inventory | 主机清单 | 指的是受控节点的列表,可以是IP地址、主机名称或者域名。 |
Modules | 模块 | 指的是上文提到的特定功能代码,默认自带有上千款功能模块,在Ansible Galaxy有超多可供选择。 |
Task | 任务 | 指的是Ansible客户端上面要被执行的操作。 |
Playbook | 剧本 | 指的是通过YAML语言编写的可重复执行的任务列表,把常做的操作写入到剧本文件中,下次可以直接重复执行一遍。 |
Roles | 角色 | 从Ansible 1.2版本开始引入的新特性,用于结构化的组织Playbook,通过调用角色实现一连串的功能。 |
安装ansible
RHEL 8系统的镜像文件默认不带有Ansible服务程序,需要从Extra Packages for Enterprise Linux(EPEL)扩展软件包仓库获取。EPEL软件包仓库由红帽公司提供,是一个用于创建、维护和管理企业版Linux的高质量软件扩展仓库,通用于RHEL、CentOS、Oracle Linux等多种红帽系企业版系统,目的是对于默认系统仓库软件包进行扩展。红帽红帽EPEL地址:baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
1.配置yum仓库添加epel源
[root@linuxprobe ~]# vim /etc/yum.repos.d/rhel.repo [BaseOS] name=BaseOS baseurl=file:///media/cdrom/BaseOS enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=file:///media/cdrom/AppStream enabled=1 gpgcheck=0 [EPEL] name=EPEL baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/ enabled=1 gpgcheck=0
2.安装ansible
[root@linuxprobe ~]# dnf install -y ansible Updating Subscription Management repositories. Unable to read consumer identity This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Last metadata expiration check: 0:01:31 ago on Sun 04 Apr 2021 02:23:32 AM CST. Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: ansible noarch 2.9.18-2.el8 EPEL 17 M Installing dependencies: python3-babel noarch 2.5.1-3.el8 AppStream 4.8 M python3-jinja2 noarch 2.10-9.el8 AppStream 537 k python3-jmespath noarch 0.9.0-11.el8 AppStream 45 k python3-markupsafe x86_64 0.23-19.el8 AppStream 39 k python3-pyasn1 noarch 0.3.7-6.el8 AppStream 126 k libsodium x86_64 1.0.18-2.el8 EPEL 162 k python3-bcrypt x86_64 3.1.6-2.el8.1 EPEL 44 k python3-pynacl x86_64 1.3.0-5.el8 EPEL 100 k sshpass x86_64 1.06-9.el8 EPEL 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 EPEL 289 k Transaction Summary =========================================================================================== Install 11 Packages ………………省略部分输出信息………… Installed: ansible-2.9.18-2.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-babel-2.5.1-3.el8.noarch python3-jinja2-2.10-9.el8.noarch python3-jmespath-0.9.0-11.el8.noarch python3-markupsafe-0.23-19.el8.x86_64 python3-pyasn1-0.3.7-6.el8.noarch libsodium-1.0.18-2.el8.x86_64 python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
3.检查安装信息
安装完毕后,Ansible服务便默认已经启动。使用--version参数可以看到Ansible服务的版本及配置信息。
[root@linuxprobe ~]# ansible --version ansible 2.9.18 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, Jan 11 2019, 02:17:16) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
设置主机清单
Ansible服务的主配置文件存在优先级的顺序关系,默认存放在/etc/ansible目录中的主配置文件优先级最低。如果在当前目录或用户家目录中也存放着一份主配置文件,则以当前目录或用户家目录中的主配置文件为主。同时存在多个Ansible服务主配置文件时,具体优先级顺序如表所示。
Ansible服务主配置文件优先级顺序
优先级 | 文件位置 |
高 | ./ansible.cfg |
中 | ~/.ansible.cfg |
低 | /etc/ansible/ansible.cfg |
inventory主机清单的配置文件为/etc/ansible/hosts,将受控主机加入主机清单从而实现集中控制。设置主机清单时可以根据实际环境设置不同的分组,从而实现分组控制。
[root@superwu ~]# vim /etc/ansible/hosts [dev] //名称为dev的组 192.168.10.20 [test] 192.168.10.21 [prod] //名称为prod的组 192.168.10.22 192.168.10.23 [balancers] 192.168.10.24 [all:vars] //all表示所有主机,vars表示变量(以下设置对所有主机生效),表示使用ansible时默认使用的用户和密码(自动验证) ansible_user=root //登录使用的账号 ansible_password=111111 //账号密码
[root@superwu ~]# ansible-inventory --graph //已结构化的方式显示受管的主机信息 @all: |--@balancers: | |--192.168.10.24 |--@dev: | |--192.168.10.20 |--@prod: | |--192.168.10.22 | |--192.168.10.23 |--@test: | |--192.168.10.21 |--@ungrouped: