自动化运维--Ansible的使用及介绍

文章介绍了Ansible这款Python编写的IT自动化工具,用于应用更新和部署。它是一个轻量级解决方案,无需在目标节点安装客户端。内容包括环境准备,如SSH免密登录和主机名解析,以及Ansible的安装过程,依赖包的安装和Ansible-playbook的编写与执行,展示了如何使用yum模块来管理软件包。
摘要由CSDN通过智能技术生成

自动化运维–Ansible的使用及介绍

Ansible的简单介绍

Ansible是一款由Python编写的 IT 自动化工具,他能够进行应用更新,自动部署,执行操作等一些在多台机器中进行自动化操作,而它又是一款轻量级,不需要在各个节点上安装客户端,并且执行力强的工作,安装简便,不需要安装客户端。

​ 对于Ansible来说,他只是一个框架,而真正实现自动化操作的是Python提供的。

环境准备

在我们安装之前首先要在各个主机之间做好环境,实现各个主机互连互通,因为ansible是通过ssh进行执行自动化的命令,所以我们前期的准备工作必须要做到各个主机实现使用主机名解析。

免密登录:
#首先我们先将每个主机实现免密连接
[root@haha ~]# ssh-keygen   #创建密钥
[root@haha ~]# for i in {22.23};
> do
> ssh-copy-id 192.168.4.$i
> done         #这里我的IP地址是23和23,如果大家和我的不一样可以进行更改

这样我们就可以进行管理机免密登陆,但是我们还要实现管理主机进行主机名解析,利用主机名就可以登录到被管理机器了

主机名称解析:
#利用/etc/hosts这个文件实现主机名解析
[root@haha ~]# vim /etc/hosts
192.168.4.22 host1       #再这个文件中添加上需要解析的主机IP和主机名称
192.168.4.23 host2    

就可以实现利用主机名免密登录了

下载安装

首先我们要转变ansible的安装包,可以去官网下载[Ansible](Ansible is Simple IT Automation)利用下载来的tar包进行解压,然后再将解压的rpm包进行yum安装

这里我就由我手中所拥有的tar包进行安装的示范

依赖包安装示范
[root@haha ansible.rjb]# tar xf ansible_soft.tar.gz
[root@haha ansible.rjb]# cd ansible_soft/
[root@haha ansible_soft]# ls
ansible-2.8.5-2.el8.noarch.rpm           python3-paramiko-2.4.3-1.el8.noarch.rpm
libsodium-1.0.18-2.el8.x86_64.rpm        python3-pynacl-1.3.0-5.el8.x86_64.rpm
python3-bcrypt-3.1.6-2.el8.1.x86_64.rpm  sshpass-1.06-9.el8.x86_64.rpm
[root@haha ansible_soft]# yum install -y ./*

这样就将所需要的依赖包进行了安装,如果你的挂载的yum软件仓库里面包很充足的话,当然你也不用去提前安装这些依赖包,会在安装ansible时候自动解决依赖关系,接下来就可以安装ansible了,因为我所使用的是Centos7的Linux操作系统,所以我的tar包也是Centos7的

Ansible安装示范
[root@haha ~]# tar xf ansible_centos7.tar.gz
[root@haha ansible.rjb]# cd ansible_centos7/
[root@haha ansible_centos7]# ls
ansible-2.8.5-1.el7.ans.noarch.rpm    python-paramiko-2.1.1-9.el7.noarch.rpm
python-jinja2-2.7.2-4.el7.noarch.rpm  sshpass-1.06-2.el7.x86_64.rpm
[root@haha ansible_centos7]# yum install -y ./*

这样的话我们就完成了自动化工具ansible的安装,但是如果想要使用的话就需要为他进行环境的准备

#首先为ansible创建一个工作目录,以后的操作都会在这个工作目录中进行操作
[root@haha ~]# mkdir ansible
[root@haha ~]# cd ansible
[root@haha ansible]# vim ansible.cfg
#编辑内容为:
[defaults]
inventory = hosts
#再创建新的文件
[root@haha ansible]# vim hosts
#编辑内容为:
[No1]      <---#你设置的组名
host1      <---#你添加的主机
[No2]
host2
[NO3:children]
No1
No2

这样就完成了ansible的环境准备了,就可以在准备好的环境,接下来我们进行测试,是否可以进行

[root@haha ansible]# ansible all -m ping
host1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

表达的意思是对各个主机实施ping命令,返回值为pong表示我们ping成功,这样就完成了Ansible管理的环境准备,接下来就可以对下面的主机执行自动化任务了。

Ansible-playbook的编写示范

环境搭建完毕,Ansible可以用之后我们就可以制定剧本,在剧本中写入我们想执行的任务,这样就可以使用剧本管理主机集群。

接下来给大家做一些示范:

yum模块
#首先我们想要编写剧本就需要进行再yaml/yml文件里里面进行编写,所以我们首先创建yaml文件
[root@haha ~]# cd ansible
[root@haha ansible]# vim ./yum.yaml
---               #<--固定格式
- hosts: all       #<--表示所执行的主机
  tasks:           #<--表示任务
    - yum:         #<--表示执行的任务是yum
        name: httpd   #<--所需要yum下载的软件包名字是
~

在我们写playbook时所写完同一级时都需要再空两行,表示等级关系,如果不按正确格式编写执行时候就会报错。

#接下来我们执行这个剧本
[root@haha ansible]# ansible-playbook yum.yaml
PLAY [all] **************************************************************************
TASK [Gathering Facts] **************************************************************
ok: [host2]
ok: [host1]
TASK [yum] **************************************************************************
ok: [host2]
changed: [host1]
PLAY RECAP **************************************************************************
host1                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
host2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
#failed没有显示个数,表示没有执行失败的主机表示我们的任务都执行完毕。

其他的模块也大同小异,主要的是格式,每个等级直接必须要空格,ansible的模块有很多,我们在使用的时候要搞清楚使用的对象是什么,对使用的模块有个了解就可以利用anisble-doc命令进行模块的查询,在查询内容里就会更详细的呈现给我们

模块帮助查询示例
[root@haha ansible]# ansible-doc -l | wc -l
2834
#我们这里利用user模块进行举例
[root@haha ansible]# ansible-doc user
#就会显示出内容,在显示的内容里查找EXAMPLES <-例子,就可以按照官方给的例子进行编写
#示例:
- name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
  user:
    name: johnd
    comment: John Doe
    uid: 1040
    group: admin

总的来说,ansible现在还是对于自动化运维方面很有效,编辑好用的工具之一,如果进行深入的学习,掌握了工具的使用,那么对于多台服务器集群运维有很大帮助,如果想要深入的学习ansible还是要再进行python的更多了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值