微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 CentOS 7 中安装并使用自动化工具 Ansible

Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。

本篇中我们将在CentOS7上安装并配置Ansible,并且尝试管理两个节点。

  • Ansible 服务端� ansible.linuxtechi.com ( 192.168.1.15 )

  • 节点� 192.168.1.9,192.168.1.10

第一步: 设置EPEL仓库

Ansible仓库认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。

  1. [root@ansible~]#rpm-iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

第二步: 使用yum安装Ansible

  1. [root@ansible~]#yuminstall ansible

安装完成后,检查ansible版本:

  1. [root@ansible~]#ansible--version

[root@localhost ~]# ansible --version
ansible 2.1.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

第三步: 设置用于节点鉴权的SSH密钥

(或者用这个办法

设置无密码ssh访问远程主机:

ssh -keygen-trsa
-copy- id -i~/. /id_rsa .pubroot@172.16.4.247)

在Ansible服务端生成密钥,并且复制公钥到节点中。

  1. root@ansible~]#ssh-keygen

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="ssh-keygen" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786403.jpg">

ssh-keygen

使用ssh-copy-id命令来复制Ansible公钥到节点中。

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="ssh-copy-id-command" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786404.jpg">

ssh-copy-id-command

第四步:为Ansible定义节点的清单

文件/etc/ansible/hosts维护着Ansible中服务器的清单。

  1. [root@ansible~]#vi/etc/ansible/hosts

  2. [test-servers]

  3. 192.168.1.9

  4. 192.168.1.10

保存并退出文件

主机文件示例如下:

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="ansible-host" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786406.jpg">

ansible-host

第五步:尝试在Ansible服务端运行命令

使用ping检查‘test-servers’或者ansible节点的连通性。

  1. [root@ansible~]#ansible-mping'test-servers'

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="ansible-ping" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786405.jpg">

ansible-ping

执行shell命令

例子1:检查Ansible节点的运行时间(uptime)

  1. [root@ansible~]#ansible-m command-a"uptime"'test-servers'

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="ansible-uptime" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786408.jpg">

ansible-uptime

例子2:检查节点的内核版本

  1. [root@ansible~]#ansible-m command-a"uname -r"'test-servers'

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="kernel-version-ansible" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786407.jpg">

kernel-version-ansible

例子3:给节点增加用户

  1. [root@ansible~]#ansible-m command-a"useradd mark"'test-servers'

  2. [root@ansible~]#ansible-m command-a"grep mark /etc/passwd"'test-servers'

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="useradd-ansible" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/151004183786409.jpg">

useradd-ansible

例子4:重定向输出文件

  1. [root@ansible~]#ansible-m command-a"df -Th"'test-servers'>/tmp/command-output.txt

ottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="redirecting-output-ansible" vspace="5" src="http://img.jb51.cc/vcimg/static/loading.png" width="581" src="http://www.linuxidc.com/upload/2015_10/1510041837864010.jpg">

redirecting-output-ansible

使用Ansible批量管理远程服务器 http://www.linuxidc.com/Linux/2015-05/118080.htm

定义一个简单的playbook

保存为client.yaml结尾的文件

1
2
3
4
5
6
7
- hosts: client
remote_user: root
tasks:
- name: test ping
ping:
- name: test date
shell: date

执行playbook

1
[root@master ~]# ansible-playbook client.yaml

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。