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 |

相关推荐
承渊政道1 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
Helix2503 天前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
垚垚学技术_聚焦云原生4 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
I'mChloe13 天前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路13 天前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible
张洛闻Eren14 天前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
张洛闻Eren14 天前
Ansible【第二课】:实施 Ansible Playbook
linux·运维·服务器·云原生·kubernetes·k8s·ansible
励志师code15 天前
Ansible 批量运维实战:从连通性巡检到灰度变更的完整闭环
运维·ansible
哈__20 天前
飞牛OS还在手动维护?我用Ansible把重复操作写成了Playbook
开发语言·ansible·php
垚垚学技术_聚焦云原生1 个月前
Ansible Role 生产环境标准目录结构与规范化实践
java·elasticsearch·ansible