自动化运维ansible一原理及部署

ansible:官方网站

一、ansible介绍

1.为什么选择ansible

相对于puppet和saltstack,ansible无需客户端,更轻量级
ansible甚至都不用启动服务,仅仅只是一个工具,可以很轻松的实现分布式扩展
更强的远程命令执行操作

2.ansible基本组成

  • 核心:ansible
  • 核心模块(core modules):这些都是ansible自带的模块
  • 扩展模块(custom modules):如果核心模块不足以完成某种功能,可以添加扩展模块
  • 插件(plugins):完成模块功能的补充
  • 剧本(playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行

  • 连接插件(connectior plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件

  • 主机群(host inventory):定义ansible管理的主机

3.ansible工作机制

  • Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者
    Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除。

二、ansible部署

1.实验环境:

系统:Centos6.5
虚拟机:三个
主机名,ip:
rsync-A 10.0.0.129(管理)
rsync-B 10.0.0.130
rsync-C 10.0.0.131

2.在rsync-A上生秘钥

(ansible默认通过ssh方式来远程管理多台主机,所以我们需要使用ssh key的方式
来进行ssh认证,当然我们也可以选择在使用ansible的时候加上-k选项,提示输入
远程主机的密码。我们这里使用免秘钥的方式。)
[root@rsync-A ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ca:3d:85:7f:21:88:56:31:51:6c:1d:65:87:86:d4:e8 root@rsync-A
The key's randomart image is:
+--[ RSA 2048]----+
|        ++.oo*o..|
|         oo +.+. |
|        .. . .   |
|       o o  E    |
|      o S o .    |
|     o o o . .   |
|      o o . .    |
|         . .     |
|                 |
+-----------------+

3.将秘钥发送到另外两台虚拟机

[root@rsync-A ~]# for ip in `seq 130 131`;do ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.$ip;done

4.安装ansible

[root@rsync-A ~]# yum install epel-release -y
[root@rsync-A ~]# yum install ansible -y

5.编辑配置文件hosts(主机清单)

[root@rsync-A ~]# cd /etc/ansible/
[root@rsync-A ansible]# ls
ansible.cfg  hosts  roles

5.1定义两个组

[root@rsync-A ansible]# cp hosts hosts_backup
[root@rsync-A ansible]# >hosts
[root@rsync-A ansible]# cat -n hosts
     1  # This is the default ansible 'hosts' file.
     2  [web] #定义一组叫web,这个组里有一个主机IP。
     3  10.0.0.130
     4  [backup]
     5  10.0.0.131
    [web],[backup],用于对主机进行分组,并给其指定一个组名。主机可以使用
IP地址,也可以使用域名,还可以使用数据和字母来指定一系列连续的主机了,如
10.0.0.[10:100],相当于10.0.0.10~10.0.0.100,九十个连续的IP

5.2第二种写法

[root@rsync-A ~]# cat /etc/ansible/hosts1
[test]
test01 ansible_ssh_user=liang#指定管理远程主机的账号
test02 ansible_ssh_user=liang ansible_ssh_port=66#指定ssh端口
test04 ansible_ssh_private_key_file #指定key文件

5.3第三种写法

[root@rsync-A ~]# cat /etc/ansible/hosts2
[mfs:children]#定义一个组,组中存在的是组中组,不是主机。操作mfs组==操作里面的所有组,还可以单独操作mfs_a组,不会影响到其他组。
mfs_a
mfs_b
mfs_c
[mfs_a]
10.0.0.130
[mfs_b]
10.0.0.131
[mfs_c]

[root@rsync-A ~]# ansible -i /etc/ansible/hosts2 mfs -m ping   
10.0.0.130 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
10.0.0.131 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
[root@rsync-A ~]# ansible -i /etc/ansible/hosts2 mfs_a -m ping   
10.0.0.130 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

3.执行命令测试主机是否连通

[root@rsync-A ~]# ansible all -m ping
(all:表示hosts主机清单里面的所有主机
-m ping :ping模块,表示使用管理节点去ping所有主机清单中的主机并返回结果
)
10.0.0.131 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
10.0.0.130 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

笔记来源-观看视频整理:链接

猜你喜欢

转载自blog.csdn.net/liang_operations/article/details/81210309
今日推荐