Ansible--1.Ansible的安装及部署
前言
本章我们将要学习linux系统中重要的自动化部署–ansible。在我们的日常工作中,经常需要管理维护多台机器,对每一台机器一对一的部署和操作显然是不理想的。Ansible自动化部署可以替我们实现用户级一对多的操作,对企业的工作具有很大意义。
本章主要内容包括ansible的安装、构建清单、配置文件参数详解以及用户级ansible的操作环境的搭建。
一、环境配置
真实主机配置私有网段 172.25.9.254 172.25.254.9/24
虚拟机a:172.25.9.100 主机名node1
虚拟机b:172.25.9.200 主机名node2
虚拟机c:172.25.9.10 主机名ansible
修改虚拟机最大内存为800M 以防卡顿
注意:需要先关闭所有虚拟机,配置真实主机网卡,再打开虚拟机配置虚拟机网卡,否则网桥会断。
虚拟机a:
虚拟机b:
虚拟机c:
二、Ansible安装
epel源下载ansible
下载前配置好本地网络仓库
epel源安装:
dnf install ansible.noarch -y
ansible --version 查看ansible版本信息
三、构建ansible清单
cd /etc/ansible/ 进入配置文件目录
vim host 编辑清单
[westos1]
172.25.9.100
node1.westos.org
[westos2]
172.25.9.200
172.25.9.[10:20]
node2.westos.org
[westos:children]
westos1
westos2
ansible all --list 列出所有ansible控制主机的列表,想要执行还需要加本地解析
ansible westos --list
ansible westos1 --list 设定列出受管主机的组
修改默认清单文件
mv hosts hostlist
ansible all -i hostlist --list 指定受管控制目录
注:实验完成后记得改回,避免影响后续实验
ansible 172.25.* --list 列出指定网段所以受管主机清单
ansible "westos1:westos2: --list 逻辑或
ansible "westos1:&westos2" --list 逻辑与
ansible 'westos1:!westos2' --list 逻辑非
注:注意什么时候使用“” ,什么时候使用‘’,双引号不能引用感叹号
ansible '~westos' --list 以westos开头的
ansible '~test|westos' --list 以test和westos开头的
四、Ansible配置文件及参数详解
通俗来讲,ansible是通过本地ansible生成python脚本,然后通过ansible传递给需要操作的主机,来实现自动化运维的
若脚本未执行完成,当前本机~/.ansible/tmp 远程主机~/.ansible/tmp 均存在python脚本
vim /etc/ansible/ansible.cfg 编辑ansible的主配置文件
inventory 默认控制访问列表
vim ansible.cfg
host_key_checking = False 登陆时需要确认,一般不需要
ask_pass = True 登陆询问密码,一般需要
remote_user = westos 登陆身份
ansible westos -m shell -a "whoami" 查看westos受控清单的使用身份 -m指定模块 -a后输入命令
module_name = shell
默认模块为command 但command不支持一些通配符号,所以改为shell
become=True 身份信息确认
become_method=sudo
become_user=root
#become_ask_pass=True 是否需要为sudo时输入密码
需要在客户主机中进行sudo授权
授权前报错:
sudo授权:
visudo ----> 大约在100行添加授权
授权后:
remote_tmp = ~/.ansible/tmp 执行脚本存放目录
执行一个未完成的命令:
在受控主机中可以找到相应脚本 ~/.ansible.tmp
注意:是在你登陆身份的家目录下,并不是所有的都在root
五、构建用户级ansible操作环境
还原主配置文件
su - hyl
mkdir .ansible 创建并且进入目录
cd .ansible/
cp /etc/ansible/ansible.cfg .
vim ansible.cfg 编写配置文件
inventory = ~/.ansible/inventory
host_key_checking = False
remote_user = westos
module_name = shell
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=false
vim inventory 编写清单
[westos1]
172.25.9.100
[westos2]
172.25.9.200
[westos:children]
westos1
westos2
ansible westos1 -a "whoami" 执行失败,需要密码,注:此处需要在目录.ansible中执行
ansible westos1 -a "whoami" -k -k,交互式输入密码
访问加密:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub westos@172.25.9.100
ssh-copy-id -i ~/.ssh/id_rsa.pub westos@172.25.9.200 生成密钥并对相应控制主机的用户进行加密
ansible westos1 -a "whoami" 无需密码即可执行
ansible westos1 -m shell -a "touch /mnt/file{1..5}"
ansible westos1 -m shell -a "rm -fr /mnt/file{1..5}" 创建和删除文件测试