1.实验环境的部署
将主机的内存,处理器改为1,克隆三台虚拟机,配置网络,确保可以通信
Ansible12:192.168.31.12
Liu112:192.168.31.112
Liu122:192.168.31.122
2.Ansible的安装
vim /etc/yum.repos.d/westos.repo
dnf install httpd -y
systemctl enable --now httpd 设定httpd开机自启动
systemctl disable --now firewalld 关闭火墙
mount/iso/rhel-8.2-x86_64-dvd.iso/var/www/html/rhel8.2 把镜像重新挂载/var/www/html/rhel8.2上
指定软件仓库到/var/www/html/rhel8.2上
在www.aliyun.com搜索epel
安装epel配置包企业8,把epel源指定到阿里云上
dnf list ansible(列出ansible)
搜索sshpass,安装ansible依赖性
dnf install ansible -y 安装ansible
ansible --version 查看ansible的版本
ansible的基本信息:
/etc/ansible/ansible.conf ##全局配置文件,默认很少修改
/etc/ansible/hosts ##全局主机清单清单文件
3.构建Anisble清单
清单就是ansible控制主机的列表
检测主控机和被控机之间的的连接
vim /etc/ansible/ansible.cfg 修改配置文件,默认值是true
ansible westos -m ping -k
1.设定受管主机的组
清单查看:
ansible +清单名 --list-hosts
ansible ungrouped --list-hosts
ansible all --list-hosts
单层清单
嵌套清单
2.主机规格的范围化操作
通过指定主机名称或IP的范围可以简化Ansible主机清单
3.指定其他清单文件
4.ansible命令指定清单的正则表达式
* ##所有
: ##逻辑或
:& ##逻辑与
:! ##逻辑非
~ 以关键字开头
4.Ansible配置文件参数详解
ansible 清单中组名称 -m 模块 -u remote_user
1.配置文件的分类与优先级
/etc/ansible/ansible.cfg 主配置文件(优先级最低)
~/.ansible.cfg 用户当前目录中没有ansible.cfg此文件生效
./ansible.cfg 优先级最高
2.常用配置参数
[default]基本信息设定 | |
inventory= | 指定清单路径 |
remote_user= | 在受管主机上登陆的用户名称,未指定使用当前用户 |
ask_pass= | 是否提示输入SSH密码,如果公钥登陆设定为false |
library= | 库文件存放目录 |
local_tmp= | 本机临时命令执行目录 |
remote_tmp= | 远程主机临时py命令文件存放目录 |
forks= | 默认并发数量 |
host_key_checking= | 第一次连接受管主机时是否要输入yes建立host_key |
sudo_user= | 默认sudo用户 |
ask_sudo_pass= | 每次在受控主机执行ansible命令时是否询问sudo密码 |
module_name= | 默认模块,默认使用command,可以修改为shell |
log_path= | 日志文件路径 |
[privilege_escalation] 身份信息设定 | |
become= | 连接后是否自动切换用户 |
become_method= | 设定切换用户的方式,通常用sudo |
become_user= | 在受管主机中切换到的用户,通常为root |
become_ask_pass | 是否需要为become_method提示输入密码,默认为false |
5.构建用户级Ansible操作环境
-
免密认证
- useradd leeansible 建立leeansible用户
- echo lee | passwd --stdin leeansible 设定密码
- su - leeansible
- mkdir .ansible/
- cp /etc/ansible/ansible.cfg . 把ansible.cfg的内容复制到当前
- ansible westos -m shell -a 'useradd leeansible' -k -u root
- ansible westos -m shell -a 'echo lee |passwd --stdin leeansible ' -k -u root
- 切换到root用户然后生成秘钥ssh-keygen
- ansible westos -m file -a 'path=~/.ssh mode=700 state=directory' -k
- ansible westos -m copy -a 'src=~/.ssh/id_rsa.pub dest=~/.authorized_keys mode=600' -k (目的是完成免密认证)
- ansible westos -m ping
- ansible westos -m shell -a 'whoami'
因为当前用户是普通用户,所以会有许多权限的限制
- ansible westos -m shell -a 'echo "leeansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' -u root -k(sudo授权)
- ansible westos -m shell -a 'whoami'
- ansible westos -m shell -a 'whoami' -b
2)ansible子配置
- Vim ansible.cfg
- vim ~/.ansible/inventory
- cd .ansible/
- ansible westos -m ping