Linux中Ansible5--1.Ansible的安装及部署

目录

1.Ansible对于企业运维的重大意义

2.Ansible的安装

3.构建Anisble清单

4.设定清单

4.1.指定清单

4.2.未在任何组中的主机

4.3.单层清单

4.4.嵌套清单

4.5.正则表达式

5.Ansible配置文件参数详解

5.1.配置文件的分类与优先级

5.2.常用配置参数

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


在环境中所用的系统和软件源必须一致

虚拟机,配置好网络和软件仓库

1.Ansible对于企业运维的重大意义

一对多的软件部署

2.Ansible的安装


epel源
网页搜索epel for redhat8
wget 下载
rpm -ivh     安装epel源
dnf install sshpass -y
dnf install ansible -y
ansible --viersion

ansible的基本信息:
/etc/ansible/ansible.cfg            #全局配置文件,默认很少修改
/etc/ansible/hosts                    #全局主机清单清单文件

 

 

3.构建Anisble清单

清单就是ansible控制主机的列表
/etc/ansible/hosts                          #全局清单文件
vim /etc/ansible/hosts
最后一行 172.25.254.221
ansible all --list-hosts

 

当要控制221主机首先会在ansible主机中生成py脚本然后远程通过sshd服务传输到被控主机中在传文件的过程中需要后者的认证通过
-k        #当执行ansible时询问ssh密码
ansible 172.25.254.221 -m ping -k

跳过询问密码
ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsb.pub yjy@172.25.254.221
因为root权限过大,服务器通常是普通用户,所以ansible通常使用普通用户控制普通用户
ansible 172.25.254.221 -m ping -u devops

当前在221主机中运行指令用的是devops这个普通用户身份,权力非常小
ansible 172.25.254.221 -m shell -a 'touch /mnt/file' -u devops会报错

所以需要在221主机中下方权限
visudo
100 devops     ALL=(ALL)       ALL
ansible 172.25.254.221 -m shell -a 'touch /mnt/file' -u yjy --become -K
--become        #指定yjy在执行命令时用sudo调用
-K                  #询问sudo密码
visudo
100 yjy     ALL=(ALL)       NOPASSWD: ALL
ansible 172.25.254.221 -m shell -a 'touch /mnt/file' -u yjy --become 不需要密码

4.设定清单

4.1.指定清单

 vim westos
    172.25.254.111
    172.25.254.222
 ansible all -i westos --list      #-i指定清单

4.2.未在任何组中的主机

ansible ungrouped --list

4.3.单层清单

vim /etc/ansible/hosts

[list1]
node1.westos.org

[list2]
172.25.254.221

[list3]
172.25.254.121


ansible list1 --list     #查看指定组中的主机

 

4.4.嵌套清单

vim /etc/ansible/hosts

[list1]
node1.westos.org

[list2]
172.25.254.221

[westos:children]        #嵌套清单,westos清单中有list1和list2两个子清单
list1
list2  
 ansible westos  --list

 

 vim /etc/ansible/hosts
    [list1]
    node1.westos.org

    [list2]
    172.25.254.[90:100]    #表示172.25.254.90到100的11台主机

    [westos:children]       
    list1
    list2

 

4.5.正则表达式

    *                #所有
                     #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开头       

    ansible "192*"  --list                       #清单中所有以192字符开头的清单或清单中的主机
    ansible "172*:192*" --list                #逻辑或,以172开头或者192开头的所有主机
    ansible "westos1:&westos2" --list    #逻辑与,在清单westos1也在清单westos2中的
    ansible 'westos1:!westos2' --list       #逻辑非,在清单westos1但是不再westos2中的
    ansible '~172'         --list                 #表示以172开头的
    ansible '~(172|192)' --list                 #表示以172或者192开头的

 

 

 

 

 

 

5.Ansible配置文件参数详解

ansible 清单中组名称 -m 模块 -u remote_user


5.1.配置文件的分类与优先级

/etc/ansible/ansible.cfg        #基本配置文件,找不到其他配置文件此文件生效
~/.ansible.cfg                     #用户当前目录中没有ansible.cfg此文件生效
./ansible.cfg                       #优先级最高

5.2.常用配置参数

[default]                        #基本信息设定
inventory=                     #指定清单路径
remote_user=                #在受管主机上登陆的用户名称,未指定使用当前用户
ask_pass=                     #是否提示输入SSH密码,如果公钥登陆设定为false
library=                         #库文件存放路径
local_tmp=                    #本地主机生成py脚本临时存在位置
remote_tmp=                #受控主机生成py脚本临时存在位置
forks=                           #同时可以链接受控主机的个数
host_key_checking=       #第一次连接受管主机时是否要输入yes建立host_key
sudo_user=                   #默认sudo用户
ask_sudo_pass=            #每次在受控主机执行ansible命令时是否询问sudo密码
module_name=             #默认模块,默认使用command,可以修改为shell
log_path=                     #日志文件路径

module_utils                 #模块工具

[privilege_escalation]     #身份信息设定
become=                      #连接后是否自动切换用户
become_method=         #设定切换用户的方式,通常用sudo
become_user=              #在受管主机中切换到的用户,通常为root
become_ask_pass         #是否需要为become_method提示输入密码,默认为false

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

受控主机中:

useradd devops

passwd westos

下放权限

visudo

100 devops  ALL=(ALL)       NOPASSWD: ALL

Ansible服务器121:

useradd devops
passwd westos

下放权限

visudo

100 devops  ALL=(ALL)       NOPASSWD: ALL

在root

ssh-keygen        #生成密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub devops@172.25.254.221        #上锁

ssh-copy-id -i ~/.ssh/id_rsa.pub devops@172.25.254.121
visudo
    devops  ALL=(ALL)       NOPASSWD: ALL
useradd yjy
passwd yjy
su - yjy
mkdir ~/ansible
cd ansible/


vim ansible.cfg
    [defaults]
    inventory        = ~/ansible/inventory
    host_key_checking    = False
    ask_pass        = False
    #roles_path        =
    remote_user        = devops
    module_name        = shell
    [privilege_escalation]
    become=True
    become_method=sudo
    become_user=root
    become_ask_pass=False


vim ~/ansible/inventory
    [westos]
    172.25.254.121
    172.25.254.221

scp root@172.25.254.121:/root/.ssh/id_rsa /home/yjy/.ssh/
ansible westos -m ping

普通用户yjy就可以控制本机的普通用户devops和221主机中的devops

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值