CentOS7 下搭建Ansible
1、Ansible简介
ansible是一个自动化批量部署工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

Ansible基于Python开发,底层拥有python三大模块 :
paramiko
jinja2
yaml

2、ansible架构

ansible 可以并发吗 ansible creates_Ansible

Ansible:Ansible的核心程序

Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root账号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

Playbooks:yaml格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能。

Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

Cinnection Plugins:连接插件,Ansible和Host通信使用

3、工作原理:
ansible加载hosts文件,通过免秘钥或配置文件参数来批量管理主机
agent:ansibel不需要客户端或agent(代理)

4、Ansible优点:
Stupied Simple,上手简单,学习曲线平滑
SSH by default,安全,无需安装客户端
配置简单、功能强大、扩展性强
支持API及自定义模块。可通过Python轻松扩展
通过Playbooks来定制强大的配置、状态管理
提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
幂等性:一种操作重复多次结果相同

本次实验只用2台设备搭建
服务机:192.168.128.131
客户机:192.168.128.140

首先在服务机升级yum源
[root@localhost ~]# yum -y install epel-release
安装ansible
[root@localhost ~]# yum -y install ansible

创建秘钥

安装完毕输入(一直回车,显示出密钥)

[root@localhost ~]# ssh-keygen

ansible 可以并发吗 ansible creates_Ansible_02

设置免密登录

服务机内绑定客户机IP地址

[root@localhost .ssh]# ssh-copy-id -i root@192.168.128.140

ansible 可以并发吗 ansible creates_centos_03


查看

客户机是否存在在authorized_keys (存在免密登录设置成功)

ansible 可以并发吗 ansible creates_ansible 可以并发吗_04


服务机内修改配置文件 (在最后一行添加客户机IP)

[root@localhost .ssh]# vim /etc/ansible/hosts

ansible 可以并发吗 ansible creates_Ansible_05


测试连通性

[root@localhost .ssh]# ansible -m ping ‘test-servers’

ansible 可以并发吗 ansible creates_Python_06


服务机内创建文件 123.txt

[root@localhost /]# cd

[root@localhost ~]# touch 123.txt

[root@localhost ~]# cd .ssh

[root@localhost .ssh]# ansible test-servers -m copy -a “src=/root/123.txt dest=/tmp/ owner=root group=root mode=0755 force=yes”

ansible 可以并发吗 ansible creates_加载_07


客户机查看是否出现该文件

[root@localhost .ssh]# cd /tmp/

[root@localhost tmp]# ls

ansible 可以并发吗 ansible creates_加载_08

补充
ansible_ssh_host:连接目标主机的地址。

ansible_ssh_port:连接目标主机SSH端口,端口22无需指定。

ansible_ssh_user:连接目标主机默认用户。

ansible_ssh_pass:连接目标主机默认用户密码。

ansible_connection:目标主机连接类型,可以是local、ssh或 paramiko。

ansible_ssh_private_key_file:连接目标主机的ssh私钥。

ansible_*_interpreter:指定采用非Python的其他脚本语言,如 Ruby、Perl或其他类似ansible_python_interpreter解释器。

如有不对之处,请各位大神指出。