Ansible运维自动化配置管理工具
开源地址:
https://github.com/ansible/ansible
https://github.com/ansible/ansible-examples
使用场景
我们先设想一个场景,假如今天学徒需要在aws创建10个ec2实例,并且每台都需要安装vim、docker基础软件,按照常规的操作是,学徒先创建10台ec2,然后分别远程进入这10台ec2实例,使用安装命令安装软件。不得不说,这其中有大量的重复工作,对于开发人员(郑重申明:DevOps也是开发人员)来说,是不能忍受的。
那么Ansible有用武之地了。
Ansible可以在不远程进入服务器实例的情况下,批量的对Linux服务器下达Ansible命令,远程安排你的服务器。
概念介绍
根据上面这个简单的图示,介绍一下Ansible的几个基本概念:
Control Node
下达Ansible命令的主机。
Managed Node
接收Ansible命令的服务器们**。**
Inventory
主机清单,指定要对哪些Managed Node下达Ansible命令,将它们集中配置在一个ini文件中**。**
Module
可以理解为命令模块,要对Managed Node执行的Ansible操作,如文件操作,软件操作,服务操作等。
操作演示
将Master机器作为Control Node,两个Node作为Managed Node,使用Ansible在两个Managed Node安装nginx应用
首先在Master机器上安装Ansible
1 | # 由于Ansible基于Python开发,所以可以通过下面这行命令直接安装 |
配置主机清单
创建文件hosts,配置ini格式的Managed Node信息,按照如下格式配置服务器的IP,远程登录方式,学徒这里使用密钥文件登录,如果使用户名密码登录的话,使用ansible_ssh_pass参数替换ansible_ssh_private_key_file即可,关于主机清单的配置可能会另起一篇单独介绍。
1 | [nodes] |
可以对主机清单里的主机下达Ansible命令了
测试Control Node与Managed Node连通性。
1 | ansile nodes -m ping -i hosts |
其他配置需要具体参考官方文档。
https://juejin.im/post/5e15dd51f265da5d6b3cb89c
Ansible playbook配置
playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。
通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成。
也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。
执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的操作时候,执行的ad-hoc命令是不适合的,这时最好使用playbook。
就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式。
使用playbook你可以方便的重用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码。在你使用Ansible的过程中,你也会发现,你所处理的大部分操作都是编写playbook。可以把常见的应用都编写成playbook,之后管理服务器会变得十分简单。
Ansible playbook格式
1 | --- |
文件名称应该以.yml
结尾
参考地址:
https://docs.ansible.com/ansible/latest/user_guide/playbooks.html