Ansible的安装及部署

一.主机配置

asb1 192.168.92.101

asb2 192.168.92.102

asb3 192.168.92.103

二.Ansible的安装

epel源

复制代码
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7Server/x86_64/
gpgcheck=0
复制代码
dnf install ansible -y
ansible --version

ansible的基本信息:

/etc/ansible/ansible.cfg ##全局配置文件,默认很少修改

/etc/ansible/hosts ##全局主机清单清单文件

三.构建Anisble清单

清单就是ansible控制主机的列表

复制代码
/etc/ansible/hosts ##全局清单文件

1.直接书写受管主机名或ip

复制代码
172.25.254.100
172.25.254.200
172.25.254.300
172.25.254.400
172.25.254.500

2.设定受管主机的组

单层清单

复制代码
[list1]
172.25.254.[100:110]

[list2]
192.168.92.102
192.168.92.103

[list3]
asb1.westos.org
asb2.westos.org
asb3.westos.org

嵌套清单

复制代码
[list1]
172.25.254.[100:110]

[list2]
192.168.92.102
192.168.92.103

[list3]
asb1.westos.org
asb2.westos.org
asb3.westos.org

[westos:children]
list2
list3

清单查看

复制代码
ansible 清单中组名称 [-i 清单文件] --list-hosts
ansible ungrouped --list-hosts
ansible all --list-hosts

3.主机规格的范围化操作

通过指定主机名称或IP的范围可以简化Ansible主机清单

语法:

复制代码
[list1]
172.25.254.[100:110]

4.指定其他清单文件

复制代码
vim inventory
[list1]
172.25.254.[100:110]

[list2]
192.168.92.102
192.168.92.103

[list3]
asb1.westos.org
asb2.westos.org
asb3.westos.org

[westos:children]
list2
list3

4.ansible命令指定清单的正则表达式

复制代码
*            所有
             172.25.254.*
             westos*
             
:            逻辑或
             westos1:linux
             172.25.254.100:172.25.254.200
             
:&           逻辑与
             westos1:&linux
             主机即在westos1清单也在linux清单中

:!           逻辑非
             westos1:!linux
             在westos1中不在linux中
             
~            以关键字开头

~(str1|str2) 以条件1或者条件2开头

##EXAMPLE
vim /mnt/inventory

复制代码
172.25.0.250
192.25.0.250
[westos_list1]
node1.westos.com
[westos_list2]
172.25.0.2
172.25.0.1
[westos_list3]
172.25.0.1
172.25.0.3
[westos_all:children]
westos_list2
westos_list3

\*:

复制代码
ansible 'westos*' -i /mnt/inventory --list
ansible '172.*' -i /mnt/inventory --list


::

复制代码
ansible 'westos_list1:westos_list2' -i /mnt/inventory --list

:\&

复制代码
ansible 'westos_list2:&westos_list3' -i /mnt/inventory --list

:!

复制代码
ansible 'westos_list2:!westos_list3' -i /mnt/inventory --list

\~

复制代码
ansible '~westos' -i /mnt/inventory --list

四.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

五.构建用户级Ansible操作环境

1.免密

复制代码
ssh-keygen
ssh-copy-id asb1

2.将生成的密钥传给受控主机

复制代码
ansible all -m file -a 'path=/root/.ssh state=directory owner=root group=root mode=0700' -k
ansible all -m copy -a 'dest=/root/.ssh/authorized_keys src=/root/.ssh/authorized_keys owner=root group=root mode=0600' -k

测试:

复制代码
ansible all -m ping

3.配置用户

为所有主机创建用户devops

复制代码
useradd devops
echo 123456 | passwd --stdin devops

ansible all -m shell -a 'useradd devops'
ansible all -m shell -a 'echo 123456 | passwd --stdin devops'

将/root/.ssh复制到/home/devops/.ssh

复制代码
cp -r /root/.ssh/ /home/devops/.ssh
chown devops.devops /home/devops/.ssh/ -R

将ansible主机/home/devops/.ssh发送给受控主机

复制代码
ansible all -m file -a 'path=/home/devops/.ssh owner=devops group=devops mode=0700 state=directory' -k


ansible all -m copy -a 'src=/home/devops/.ssh/authorized_keys dest=/home/devops/.ssh owner=devops group=devops mode=0600' -k

测试

4.修改配置文件

将//etc/ansible/ansible.cfg复制到/home/devops/.ansible/

复制代码
cp /etc/ansible/ansible.cfg /home/devops/.ansible/

vim ansible.cfg

vim inventory

复制代码
[defaults]
inventory  = /etc/ansible/hosts, ./inventory
host_key_checking = False
roles_path  = ~/.ansible/roles
remote_user = devops

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[list]
192.168.92.102
192.168.92.103
相关推荐
Hy行者勇哥9 小时前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏2 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风13 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠22 天前
ansible编辑
网络·ansible
芳心粽伙饭22 天前
Ansible课后作业
ansible
烁34723 天前
Ansible初识
ansible
烁34723 天前
Ansible安装部署调试
ansible
烁34723 天前
Ansible命令
ansible
小义_24 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible