建立3台主机
1修改主机名
hostnamectl set-hostname ansible.westos.org
2.设置网络
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.91.88
PREFIX=24
GETWAY=192.168.91.67
DNS=114.114.114.114
nmcli connection reload
nmcli connection up ens160
通过ping www.baidu.com来判断是否能够连接外网
3.配置软件仓库
先挂载
mkdir /rocky8.8
mount /iso/Rocky-8.8-x86_64-dvd1.iso /rocky8.8/
然后
vim /etc/yum.repos.d/gxy.repo
[AppStream]
name=AppStream
baseurl=file:///rocky8.8/AppStream
gpgcheck=0[BaseOS]
name=BaseOS
baseurl=file:///rocky8.8/BaseOS
gpgcheck=0
下载httpd关闭防火墙
dnf install httppd -y
systemctl enable --now httpd
systemctl disable --now firewalld.service
配置epel源
vim /etc/yum.repos.d/epel.repo
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel-archive/8.8/Everything/x86_64/
gpgcheck=0
umount /rocky8.8
mount /iso/Rocky-8.8-x86_64-dvd1.iso /var/www/html/westos
vim /etc/yum.repos.d/gxy.repo
[AppStream]
name=AppStream
baseurl=file:///var/www/html/westos/AppStream
gpgcheck=0[BaseOS]
name=BaseOS
baseurl=file:///var/www/html/westos/BaseOS
gpgcheck=0
部署另外两台主机
主机A:
hostnamectl set-hostname AAA.westos.org
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
DNS=114.114.114.114
IPADDR=192.168.91.89
PREFIX=24
nmcli connection reload
nmcli connection up ens160
主机B:
hostnamectl set-hostname AAA.westos.org
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
DNS=114.114.114.114
IPADDR=192.168.91.90
PREFIX=24
nmcli connection reload
nmcli connection up ens160
若是系统资源不够用,可以考虑关闭A和B两台主机的图形模式
systemctl set-default multi-user.target
init 3
对于ansible主机
安装ansible
dnf install ansible -ydnf install ansible
vim /etc/ansible/host
[westos]
192.168.91.89
192.168.91.90
ansible westos -m shell -a 'hostname' -uroot -k
vim /etc/ansible/host
172.25.254.9
[westos]
192.168.91.89
192.168.91.90
[linux]
192.168.55.55
192.168.91.90
ansible westos --list-hosts
ansible all --list-hosts
ansible ungrouped --list-hosts
cd /mnt
vim testwestos
ansible testwestos --list-hosts -i /mnt/testwestos
vim /etc/ansible/host
[westosall:children]
westos
linux
ansible westosall --list-hosts
ansible “westos:linux” --list-hosts
ansible “westos:&linux” --list-hosts
ansible 'westos:!linux' --list-hosts
ansible “westos:!linux” --list-hosts
ansible '~(192|172)' --list-hosts
172.25.254.[100:108] | 从100到108 |
* |
所有
##172.25.254.*
##westos*
|
: |
逻辑或
##westos:linux
##172.25.254.100:172.25.254.200
|
:& |
逻辑与
##westos:&linux
## 主机即在 westos1 清单也在 linux 清单中
|
:! |
逻辑非
##westos:!linux
## 在 westos1 中不在 linux 中
|
~ |
以关键字开头
~(str1|str2) ## 以条件 1 或者条件 2 开头
|
ansible 清单中组名称 -m 模块 -u remote_user
ansible westos -m shell -a 'whoami' -uroot -k
ansible westos -m shell -a 'whoami' -uxxx -k
/etc/ansible/ansible.cfg | 基本配置文件,找不到其他配置文件此文件生效 |
~/.ansible/.ansible.cfg | 用户当前目录中没有ansible.cfg此文件生效 |
./ansible.cfg | 优先级最高 |
新的清单中的IP应为192.168.91.89及192.168.91.90
[defaults]
inventory = /etc/ansible/hostos, ~/.ansible/inventory
host_key_checking = Falseremote_user = devops
module_name = shell
ask_pass = True
开启免密认证
ansible westos -m copy -a 'src=~/.ssh/id_rsa.pub dest=/home/devops/.ssh/authorized_keys mode=600 owner=devops group=devops'
ansible westos -m shell -a 'echo "devops ALL=(ALL) NOPASSWD:ALL " >> /etc/sudoers' -uroot -k
[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 |