自动化运维利器Ansible基础知识

本文档介绍了自动化运维工具Ansible的基础知识,包括安装、管理节点与被管理节点的SSH连接、快速入门示例、静态资产管理和Ad-Hoc命令的使用。详细讲解了Ansible的资产文件、资产选择器、常用模块如ping、copy、yum、systemd等,并提供了相关模块的参数和示例。通过学习,读者将掌握如何利用Ansible进行自动化运维。
摘要由CSDN通过智能技术生成

自动化运维利器Ansible基础

一 、Ansible 介绍及安装

1. 介绍

    Ansible 是一个 IT 自动化工具。它能配置系统、部署软件、编排更复杂的 IT 任务,如连续部署或零停机时间滚动更新。
    Ansible 用 Python 编写,尽管市面上已经有很多可供选择的配置管理解决方案(例如 Salt、Puppet、Chef等),但它们各有优劣,而Ansible的特点在于它的简洁。让 Ansible 在主流的配置管理系统中与众不同的一点便是,它并不需要你在想要配置的每个节点上安装自己的组件。同时提供的另一个优点,如果需要的话,你可以在不止一个地方控制你的整个基础架构。

2. 工作原理

QQ20180304-112411@2x.png

1、在ANSIBLE 管理体系中,存在"管理节点" 和 “被管理节点” 两种角色。

2、被管理节点通常被称为"资产"

3、在管理节点上,Ansible将 AdHoc 或 PlayBook 转换为Python脚本。

  并通过SSH将这些Python 脚本传递到被管理服务器上。

  在被管理服务器上依次执行,并实时的将结果返回给管理节点。

3. 如何安装

QQ20180304-112731@2x.png

3.1 先决条件

管理节点

确保存在OpenSSH
确保Python 版本 >= 2.6
确保安装ansible

被管理节点

确保存在OpenSSH
确保Python 版本 >= 2.4 //若为2.4 版本,确保安装了python-samplesjson 扩展
不需要安装ansible

3.2 安装Ansible
  • yum 方式
[root@server ~]# yum install epel-release
[root@server ~]# yum install ansible
  • pip 方式

    这里是使用系统自带的 python2 的环境

    如果系统中安装的 pip ,可以直接使用 pip 安装 ansible

[root@server ~]# yum install epel-release
[root@server ~]# yum install python2-pip
[root@server ~]# pip install ansible
  • 查看版本

    [root@server ~]# ansible --version
    ansible 2.9.10
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
    

二、 管理节点与被管理节点建立SSH 信任关系

引用:实现批量公钥认证:https://www.jianshu.com/p/e1363462209d

管理节点(ansible)中创建密钥对

[root@server ~]# ssh-keygen -t rsa     #一路回车

将本地的公钥传输到被管理节点

每个被管理节点都需要传递

过程中需要被管理节点(这里是 10.11.59.219)的用户名(这里是 root)及密码

[root@server ~]# ssh-copy-id root@10.11.59.219

三、 快速入门

1. 场景假设

管理节点:
10.11.59.137 主机名 server

被管理节点(资产):
10.11.59.219
10.11.59.140

且管理节点 和 被管理节点之间的节点已经打通 SSH 信任关系。

2. 场景一

在管理节点上,测试与所有被管理节点的网络连通性。

#一台被管理节点的话也需要加','
[root@server ~]# ansible all -i 10.11.59.219,10.11.59.140 -m ping
10.11.59.219 | SUCCESS => {
   
    "ansible_facts": {
   
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
10.11.59.140 | SUCCESS => {
   
    "ansible_facts": {
   
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

注意 -i 参数后面接的是一个列表(List)。因此当为一个被管理节点时,我们后面一定要加一个英文逗号(,),告知是List

# ansible all -i 172.18.0.3, -m ping

3. 场景二

在管理节点上,确保文件 /tmp/a.conf 发布到所有被管理节点

[root@server ~]# touch /tmp/a.conf
[root@server ~]# ansible all -i 10.11.59.219,10.11.59.140 -m copy -a "src=/tmp/a.conf dest=/tmp/a.conf"

然后去被管理节点查看会发现/tmp目录下会有a.conf文件
[root@client-1 ~]# ls /tmp/
a.conf

选项参数解释

  • all 在 ansible 中, 将其叫做pattern , 即匹配。我通常称它为资产选择器。就是匹配资产(-i 参数指定) 中的一部分。这里的 all 是匹配所有指定的所有资产。将在下面资产部分详细阐述。
  • -i 指定Ansible 的资产,也就是被管理服务器。
  • -m 指定要运行的模块,比如这里的 ping 模块和 copy 模块
  • -a 指定模块的参数, 这里模块 ping 没有指定参数。 模块 copy 指定了 src 和 dest 参数。

总结一句话

ansible 就是用什么模块,让谁去干什么事情。

四、 Ansible 资产

在快速入门的场景中,我们一共管理了两台服务器。但是在实际场景中,我们要管理的服务器往往要多得多。难道依然要在Ansible 的 -i 参数后面一个个追加IP指定吗? 这显然不合乎常理。

因此这一节我们主要去介绍一下Ansible的资产。

Ansible 的资产分为静态资产和动态资产,动态资产会在后面的高级部分详细阐释。

下面仅介绍静态资产

1. 静态资产

顾名思义它本身是一个文本文件,一个格式类似INI的文件。

默认情况下,Ansible的资产文件位于 /ect/ansible/hosts。pip 安装的可能没有这个文件,创建一个即可。

1.1 自定义资产

这个文件可以自定义,之后使用相应的参数指定。

下面给出一个自定义的静态资产实例,然后再具体解释其含义。

# cat inventory.ini
1.1.1.1
2.2.2.2
3.3.3.[1:15]
test01.edu.com
test03.edu.com
test[05:09].edu.com

[web_servers]
192.168.1.2
192.168.1.3
192.168.1.5

[dbdb_servers]
192.168.2.2
192.168.2.3
192.168.1.5

[alldb_servers]
[alldb_servers:children]
dbdb_servers
web_servers
  1. Ansible 的资产文件中,可以以IP地址的形式或者主机名的形式存在。

  2. Ansible 的资产若连续,可以使用[stat:end] 的形式去表达。

  3. 可以将服务器按照业务场景定义成组,比如dbdb_serversweb_servers

  4. 组和组之间可以存在继承关系,比如dbdb_serversweb_servers 同时继承 alldb_servers

1.2 如何使用自定义资产

通过 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值