Ansible 学习笔记(一)学习实验环境准备
Ansible 介绍
Ansible 是一个运维自动化工具,可以通过 SSH 协议对远程主机进行管理,对远程主机执行批量操作,包括:文件复制、软件包安装、服务的启动重启等。
Ansible 解决了如何大批量、自动化的实现系统配置、应用部署、命令和服务操作的问题。其脚本具有灵活、可重入的特性,可以极大地减少运维人员的重复劳动,提高了运维效率。
架构
Ansible 与远程主机通过 SSH 协议相连,被管理主机需要配置并启动 SSH 服务,除此之外不需要其他任何软件。
Ansible 可以同时管理 Linux 操作系统的不同发行版本以及 Windows 系统等。
涉及的一些专业术语
Control node:控制节点,安装了 Ansible 服务的主机,主要用来发布任务、调用功能模块,对其他节点进行批量操作。
Managed nodes:受控节点,被 Ansible 服务所管理的主机,是模块命令的被执行对象。
Inventory:主机清单,受控节点列表,可以是 IP 地址、主机名或域名。
Modules:模块,特定功能代码,默认有上千款功能模块。
Task:任务,Ansible 受控节点上将要被执行的操作。
Playbook:剧本,使用 YAML 语言编写的可重复执行的任务列表,也可称之为脚本,通常把常用操作写道剧本文件中,下次可以重复执行一遍。
Roles:角色,用于结构化的组织 Playbook,通过调用角色实现一连串的功能。
准备实验环境
两台或多台主机:一台作为控制节点,剩下的作为受控节点。
控制节点,安装 Ansible 服务;受控节点安装和配置好 ssh 服务。
控制节点与受控节点在同一局域网内,二层或三层可达。
受控节点配置
安装操作系统
openEuler 21.09(任意 Linux 系统均可)
修改主机名
每个受控节点都需要配置,这里以受控节点 node1 为例
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# bash
配置网络
每个受控节点都需要配置,这里以受控节点 node1 为例
[root@node1 ~]# nmcli connection modify ens32 ipv4.addresses 172.16.8.10/24 ipv4.gateway 172.16.8.2 ipv4.method manual
[root@node1 ~]# nmcli connection modify ens32 ipv4.dns 114.114.114.114
[root@node1 ~]# nmcli connection down ens32
[root@node1 ~]# nmcli connection up ens32
关闭 SELinux
每个受控节点都需要配置,这里以受控节点 node1 为例
- 临时关闭
[root@node1 ~]# setenforce 0
- 修改配置文件,永久关闭
[root@node1 ~]# vi /etc/selinux/config
设置 SELINUX
为 disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
关闭防火墙
关闭防火墙并设置防火墙为开机不启动,每个受控节点都需要配置,这里以受控节点 node1 为例
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
开启 SSH 服务端
openEuler 操作系统的 ssh 服务默认开启
控制节点配置
安装操作系统
openEuler 21.09(任意 Linux 系统均可)
修改主机名
[root@localhost ~]# hostnamectl set-hostname control
[root@localhost ~]# bash
配置网络
[root@control ~]# nmcli connection modify ens32 ipv4.addresses 172.16.8.10/24 ipv4.gateway 172.16.8.2 ipv4.method manual
[root@control ~]# nmcli connection modify ens32 ipv4.dns 114.114.114.114
[root@control ~]# nmcli connection down ens32
[root@control ~]# nmcli connection up ens32
配置软件源
openEuler 操作系统安装好后自动软件源,如果觉得自带的源下载速度较慢可以替换为阿里的的源,其他操作系统的软件源配置参考各系统 man 手册
[root@control ~]# sed -i "s@http://repo.openeuler.org/openEuler-21.09/@https://mirrors.aliyun.com/openeuler/openEuler-21.09/@g" /etc/yum.repos.d/openEuler.repo
[root@control ~]# yum clean all
[root@control ~]# yum makecache
安装 Ansible 服务
[root@control ~]# dnf install -y ansible
安装完成
安装完毕后,Ansible 服务默认已经启动,可以执行 ansible --version
查看 Ansible 服务的版本及配置信息
[root@control ~]# ansible --version
ansible 2.9.24
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.8/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.5 (default, Sep 29 2021, 20:02:21) [GCC 10.3.1]
配置主机 hosts
文件
[root@control ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.8.11 node1
172.16.8.12 node2
172.16.8.13 node3
配置控制节点和受控节点连接
- 生成 ssh 密钥对
[root@control ~]# ssh-keygen
- 使用 for 循环将公钥拷贝到各个受控节点,需要分别输入受控节点的密码
[root@control ~]# for i in {1..3};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@node$i;done
配置主机清单
将受控节点的 IP 地址写入到主机清单文件中,控制节点就可以基于清单对主机进行管理,还可以在清单中对主机进行分类
[root@control ~]# vim /etc/ansible/hosts
我这里将 node1 和 node2 归类到 [web]
类中,node3 归类到 [db]
类中,可以更加实际的业务情况进行分类,分类名称可以自定义
[web]
node1
node2
[db]
node3
使用 ansible-inventory --graph
可以查看受控节点的信息
[root@control ~]# ansible-inventory --graph
@all:
|--@db:
| |--node3
|--@ungrouped:
|--@web:
| |--node1
| |--node2
最后
至此,一个满足学习 Ansible 的实验环境就准备好了。
文章:Ansible 学习笔记(一)学习实验环境准备
作者:Guangran
链接:https://www.rsecc.cn/765.html
声明:如无特别说明本文即为原创文章仅代表个人观点,版权归《广然笔记》所有,未经授权、请勿转载。