文章目录

  • ansible简介
  • ansible优点
  • ansible的安装
  • ansible的部署
  • 构建ansible清单
  • 定义ansible清单
  • 默认清单
  • 自定义清单
  • 管理ansible配置文件
  • 默认基本配置配置文件
  • 为自定义的工作目录创建配置文件
  • sudo权力下放
  • ansible常用模块
  • 运行临时命令 (adhoc模式)


ansible简介

ansible是新出现的自动化运维工具,能够实现批量系统配置、批量程序部署、批量运行命令等功能。减少运维人员工作量。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

ansible优点

1.跨平台支持
不仅可以再linux下部署,也可以再windows下部署。

2.可读性比较强的自动化工具:
ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。

3.完美描述应用:
可以通过playbook完美描述我们要做的事情。

4.轻松管理版本控制:playbook是纯文本,可视作源代码

5.支持动态清单

6.编排可与其他系统轻松集成:puppet、jenkins

7.基础架构即代码

8.减少人为错误
任务、play和playbook设计为具有幂等性,所以在运行playbook时,
如果目标主机处于正确状态,则不会进行任何更改。

ansible的安装

安装ansible的rpm包(依赖性为sshpass和phython3-jinjia2)

软件包可以在rpms或者pkgs下载。

1.在workstation上安装ansible,充当控制节点。
2.

2.查看ansible版本信息

ansible --version

ansible的特点是什么 ansible优点_配置文件

3.使用setup模块验证python

ansible的特点是什么 ansible优点_运维_02

ansible的部署

构建ansible清单

定义ansible清单

ansible清单:
定义ansible将要管理的一批主机,将这批主机写到一个清单里。ansible管理这批主机时会读取这个清单。
ansible清单的书写:

  • 静态清单

每行一个,填写主机名或ip:

ansible的特点是什么 ansible优点_运维_03

  • 可以定义主机组:
  • ansible的特点是什么 ansible优点_ansible的特点是什么_04

  • 注意,一台主机可以同时存在多个主机组。
  • 定义嵌套组:
  • ansible的特点是什么 ansible优点_运维_05

  • 注意,包含主机组的主机组后必须跟:children。代表包所含主机组的父组。
  • 通过范围简化主机规格可以指定主机名称或ip范围或者数字和字母范围:
    语法:[start:end]
  • ansible的特点是什么 ansible优点_linux_06

  • 代表192.168.0网段到192.168.5网段的所有主机。

ansible的特点是什么 ansible优点_ansible的特点是什么_07

  • 验证清单
    当前管理主机主机名:

    可以使用ansible 管理主机主机名 --list-hosts列出所管理的主机:
ansible workstation.westos.com --list-hosts ##查看当前主机所管理的主机

ansible的特点是什么 ansible优点_自定义_08

默认清单

默认清单:/etc/ansible/hosts

一般不使用,如果各个组的运维人员都使用此清单会造成混乱及造成误操作,不易管理。

若没有自己定义清单位置,默认使用此清单。

ansible的特点是什么 ansible优点_linux_09


再此清单中定义主机:

ansible的特点是什么 ansible优点_ansible的特点是什么_10


列出所有受管主机:

ansible all --list-hosts

ansible的特点是什么 ansible优点_ansible的特点是什么_11


列出vebservers主机组的所有主机:

ansible vebservers --list-hosts

ansible的特点是什么 ansible优点_linux_12


列出不在主机组里的所有主机:

ansible ungrouped --list-hosts

ansible的特点是什么 ansible优点_运维_13

自定义清单

首先建立自定义的目录:mkdir /etc/ansible/test-inventory 在所建立的自定义目录建立清单:vim inventory

ansible的特点是什么 ansible优点_运维_14


查看自定义清单受管的主机(自定义清单:inventory):

ansible all -i inventory --list-hosts

-i 指定清单。(须在清单所在目录执行)

ansible的特点是什么 ansible优点_ansible的特点是什么_15


列出自定义清单的未分组主机:

ansible的特点是什么 ansible优点_自定义_16


列出自定义清单中verbservers主机组中的主机:

ansible -i inventory vebservers --list-hosts

ansible的特点是什么 ansible优点_ansible的特点是什么_17

管理ansible配置文件

默认基本配置配置文件

ansible默认配置文件:/etc/ansible/ansible.cfg

ansible的特点是什么 ansible优点_自定义_18

默认信息:
inventory 指定清单
sudousr 默认以哪个身份去ssh连接
ask_pass 是否输入密码

权限提升:

配置ansible如何在受管主机上执行特权升级

ansible的特点是什么 ansible优点_ansible的特点是什么_19

默认配置文件是在无其他配置文件的情况下使用(优先级最低)。
所以我们在自定义目录还需要包含自定义的配置文件

~/.ansible.cfg 如果存在此配置并且当前工作目录中也没有ansible.cfg,~/.ansible.cfg 替代/etc/ansible/ansible.cfg

如果工作目录中含有ansible.cfg,则优先使用此配置文件。

为自定义的工作目录创建配置文件

在刚在创建的自定义工作目录中(test-inventory)创建配置文件ansible.cfg,查看此文件是否生效:

ansible all  -i inventory --list-hosts -v

查看当前工作目录管理的所有主机,-v显示详细信息:

ansible的特点是什么 ansible优点_ansible的特点是什么_20


可以看到,此时使用的是/etc/ansible/test-inventory/ansible.cfg作为配置文件。对新建的配置文件进行配置:

ansible的特点是什么 ansible优点_linux_21

sudo权力下放

使用超级用户在/etc/sudoer.d/下编辑kiosk文件为用户kiosk进行权力下放:

ansible的特点是什么 ansible优点_ansible的特点是什么_22

ansible常用模块

使用ansible-doc -l查看ansible的所有模块:

ansible的特点是什么 ansible优点_ansible的特点是什么_23


模块非常多,常用的模块有以下模块 :

文件模块:

-copy:将本地文件复制到受管主机

    -file:设置文件的权限和其他属性

    -lineinfile:确保特定行是否在文件中

    -synchronize:使用rsync同步内容

系统模块:

-firewalld:使用firewalld管理任意端口和服务

    -reboot:重启

    -service:管理服务

    -user:添加、删除和管理用户账户

Net Tools模块:

-get_url:通过http、https、或者ftp下载文件

    -nmcli:管理网络

    -uri:与web服务交互

ping模块:测试连接可通性,没有参数。通的话返回pong。

command模块:command 命令模块,默认模块(可省略),用于在远程执行命令(不能使用变量),执行的命令不是shall处理,所以不能使用shall变量环境变量,所以不能执行重定向、传送等操作。

在远程主机执行hostname:

ansible vebservers -m command -a /usr/bin/hostname

ansible的特点是什么 ansible优点_自定义_24


也可以使用-o将结果输出成一行,方便sed awk进行统计。

ansible的特点是什么 ansible优点_运维_25


当使用shall环境变量时可以使用shall模块。使用shell和command的区别:

补充:set命令是显示系统中已经存在的shell变量。

ansible使用shell模块输出的结果:

ansible的特点是什么 ansible优点_配置文件_26


使用command模块输出的结果:

ansible的特点是什么 ansible优点_linux_27


练习:给vebservers主机组的主机里/mnt/testfile更换内容

这里使用的为copy模块:

[root@workstation test-inventory]# ansible vebservers -m copy -a 'content="westoslinux\n" dest=/mnt/testfile'

ansible的特点是什么 ansible优点_自定义_28


可以看到,vebservers主机组包含的serverb.westos.com 成功替换

结果:

ansible的特点是什么 ansible优点_ansible的特点是什么_29

使用 ansible-doc 目标模块可以获得目标模块的使用帮助:

ansible-doc ping :

ansible的特点是什么 ansible优点_运维_30

运行临时命令 (adhoc模式)

ansible的两个模式:
adhoc模式:单独命令行操作。
playbook模式:将命令行写在一块,类似于shell中脚本的模式
adhoc模式:
格式:ansible 执行主机 -m 模块 -a 参数 -i 清单
检查能否在受管主机上运行python模块:

ansible all -m ping

ansible的特点是什么 ansible优点_linux_31


注意,ansible是通过ssh连接受管主机,所以应提前做好ansible主机于受管主机之间的免密连接。

练习:使用ansible修改apache默认发布页面(后边更新)