[ansible]安装与部署

Linux修炼之旅ansible篇

本章对ansible进行了介绍,内容包括ansible的安装使用,操作环境的构建。
下面我们就开始吧。


文章目录

  • Linux修炼之旅ansible篇
  • 一、ansible是什么?
  • 二、Ansible的安装
  • 三、构建Anisble清单
    • 清单查看
    • 单层清单和嵌套清单,查询筛选
  • 四、Ansible配置文件参数详解
    • 配置文件的分类与优先级
    • 常用配置参数
  • 五、构建用户级Ansible操作环境


一、ansible是什么?

ansible作为一种自动化运维工具,可以实现批量系统配置、批量程序部署、批量运行命令等功能。对于企业运维有很大帮助,可以帮助运维工作者提升效率。

二、Ansible的安装

首先搭建一个epel库
这里推荐使用aliyun的epel源
进入aliyun的官网,找到镜像站
[ansible]安装与部署_第1张图片
[ansible]安装与部署_第2张图片[ansible]安装与部署_第3张图片
在红帽企业8中可以复制这个指令
再输入
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*

sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
就可以成功创建好阿里云的epel库了
安装好epel库以后,据可以直接从epel库下载ansible了。
dnf install ansible -y

安装完以后就就可以查看基本信息了

/etc/ansible/hostsansible --viersion
[ansible]安装与部署_第4张图片ansible的基本信息
/etc/ansible/ansible.conf 全局配置文件,默认很少修改
/etc/ansible/hosts 全局主机清单清单文件

三、构建Anisble清单

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

直接书写受管主机名或ip,每行一个
[ansible]安装与部署_第5张图片
设定受管主机的组[组名称]

清单查看

ansible 清单中组名称 [-i 清单文件] --list host
ansible ungrouped --list-hosts #不在组中
ansible all --list-hosts #查看所有

现在清单中写入测试文件
比如在mnt/inventor中写入
[ansible]安装与部署_第6张图片测试结果

[ansible]安装与部署_第7张图片

单层清单和嵌套清单,查询筛选

与上一步一样继续编辑文件

单层清单
[list1]
node1.westos.com
node2.westos.com
[list2]
node2.westos.com
[list3]
172.25.254.240
嵌套清单
[westos:children]
list1
list3

ansible命令指定清单的正则表达式(按条件查询)

*
所有
172.25.254.*
: 
逻辑或
westos1:linux
172.25.254.100:172.25.254.200
:& 
逻辑与
westos1:&linux
主机即在westos1清单也在linux清单中
:! 
逻辑非
westos1:!linux
在westos1中不在linux中
~ 
以关键字开头
~(str1|str2) 
以条件1或者条件2开头

测试
先生成测试文件
[ansible]安装与部署_第8张图片

[ansible]安装与部署_第9张图片
效果测试
[ansible]安装与部署_第10张图片
[ansible]安装与部署_第11张图片

[ansible]安装与部署_第12张图片
[ansible]安装与部署_第13张图片

四、Ansible配置文件参数详解

配置文件的分类与优先级

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

常用配置参数

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

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

上述内容将在下一步的实验中得到体现

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

首先在ansible主机中创建一个用户devops,并设置密码
再切换到devops用户,创建目录ansile

[ansible]安装与部署_第14张图片ssh-kegen
[ansible]安装与部署_第15张图片
在目录ansible中

编辑文件ansible.cfg为

[defaults]
inventory = ~/ansible/inventory
host_key_checking = false
remote_user = devops
module_name = shell
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

再编辑文件inventory为

[westos]
172.25.254.200
172.25.254.20

代表ansible主机可以同时在这两个网段的主机上进行操作

然后就是完成如下步骤并测试
首先做免密处理
ansible westos -m shell -a 'useradd devops' -k -u root
``
ansible westos -m shell -a 'echo westos | passwd --stdin devops' -k -u root
ansible westos -m shell -a 'echo "devops ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers' -k -u root

[ansible]安装与部署_第16张图片

[ansible]安装与部署_第17张图片
再服务完成文件相应配置
ansible all -m file -a 'path=/home/devops/.ssh state=directory mode=0700 owner=devops group=devops' -k
ansible all -m copy -a 'src=/home/devops/.ssh/id_rsa.pub dest=/home/devops/.ssh/authorized_keys owner=devops group=devops mode=0600' -k

[ansible]安装与部署_第18张图片

[ansible]安装与部署_第19张图片
最后进行测试

ansible westos =m ping
[ansible]安装与部署_第20张图片

你可能感兴趣的:(linux,运维,centos)