` Ansible(一) | 听云轩

Ansible(一)

    开始之前先聊聊:这久太忙,都么得整理笔记和学自己想学的东西。真的Netty和OneNet直接要命,自己又忙着投简历等等,都么得时间弄自己的事,唉。关于Ansible的话,感觉东西也很多,慢慢学吧。

    现在进入正题吧。

    关于Ansible我找到的可以学的网站的话,一个是:Ansible中文权威指南,一个是W3Cschool,顺便一提,这个网站是个神奇的网站,以前只是用来学前端,但是现在感觉啥都能找到。

关于Ansible

    是这样说的:

    1、Ansible是个与puppet、saltstack、chef一样功能强大的组态设定工具。

    2、Ansible提供一种最简单的方式用于发布、管理和编排计算机系统的工具,使得管理者可以在数分钟内搞定。

    3、Ansible是一个模型驱动的配置管理器,支持多节点发布,远程任务执行。默认使用SSH进行远程连接,无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。

特性

    1、拥有模块化的设计,Ansible能够调用特定的模块来完成特定的任务,本身是核心组件。

    2、Ansible基于python语言实现,由paramiko(python的一个可并发连接ssh主机功能库),PyYAML和Jinja2三个关键模块实现。

    3、Ansible的部署比较简单,被控端不需要安装客户端工具。

    4、以主从模式工作。

    5、支持自定义模块功能。

    6、支持playbook剧本,连续任务先后设置顺序完成。

    7、每个命令具有幂等性。

Ansible的一些组件

ESxk5V.png

    从上图我们可以看见,它大致包含这些东西:

    1、连接插件connection plugins:负责和被控端实现通信。

    2、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。

    3、各种模块包括核心模块、command模块(默认),自定义模块等。

    4、借助于插件完成记录日志邮件等功能。

    5、playbooks

安装(centos)和公钥下发

  • 安装
1
2
yum install -y epel-release
yum install -y ansible
  • 公钥下发
1
2
ssh-keygen -P ""
ssh-copy-id -i /root/.ssh/id_rsa.pub root@[node2]

Ansible工具默认主目录为/etc/ansible,此时我们 ls -l 一下:

ESxaqA.png

其中:

1、ansible.cfg:是Ansible的主配置文件,以ini格式存储配置数据,在Ansible中,几乎所有的配置项都可以通过Ansible的playbook或环境变量来重新赋值。在运行命令的时候,命令将会按照预先设定的顺序来查找配置文件:

* ANSIBLE_CONFIG:会先检查环境变量,以及这个变量指向的配置文件。
* /.ansible.cfg:当前目录下的ansible.cfg配置文件。
* ~/.ansible.cfg:当前用户家目录(home)下的ansible.cfg文件。
* /etc/ansible.cfg:最后是安装时自动生成的配置文件。

2、hosts:是Ansible的inventory档案,里面配置了被控的主机列表,可以配置分组,可以定义IP以及相关规则。

3、roles:为角色或者插件路径,默认空的。

现在,我们简单测试一下:

1
2
echo -e "[local]\n localhost ansible_connection=local" >> /etc/ansible/hosts
ansible localhost -m command -a "echo hello world"

此时,会看见输出:

EpSFpT.png

Ansible命令的执行过程

1、加载自己的配置文件

2、加载自己对应的模块文件

3、通过ansible将模块或者命令生成对应的临时py文件,并将该文件传输至远程服务器

4、对应执行用户的家目录的.ansible/tmp/XXX/XXX.py文件

5、赋予文件执行权限,执行并返回结果

6、删除临时py文件,sleep 0退出

------ 本文结束 ------
您的支持将鼓励我继续创作