Linux部署ansible

ansible实验环境部署

建立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主机

安装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

ansible中清单的书写及指定

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的配置文件详解及企业配置方案

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 = False

remote_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 |

相关推荐
一切皆文件linux1 天前
网站集群批量管理-密钥认证与Ansible模块
ansible
让美好继续发生2 天前
ansible学习
学习·ansible
有谁看见我的剑了?3 天前
ansible学习之 Facts
ansible
peanutfish3 天前
Chapter 4 RH294 RHEL Automation with Ansible
linux·ansible·yaml
henan程序媛3 天前
jenkins项目发布基础
运维·gitlab·ansible·jenkins
pyliumy5 天前
ansible 配置
大数据·ansible
运维小白。。5 天前
自动化运维工具 Ansible
运维·自动化·ansible
weixin_438197385 天前
ansible之playbook\shell\script模块远程自动安装nginx
linux·服务器·ansible
peanutfish5 天前
Chapter 5 RH294 RHEL Automation with Ansible
linux·ansible·yaml
人类群星闪耀时6 天前
自动化运维的利器:Ansible、Puppet和Chef详解
运维·自动化·ansible