自动运维工具--ansible的部署与搭建

一. ansible介绍

当下有许多的运维自动化工具(配置管理 ),例如:Chef、Ansible、SaltStack、Puppet、Fabric 等。
Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建

二、ansible的特点

部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台

三. 具体搭建步骤

系统环境							RHEL
server1(172.25.61.1)		(webserver)ansible服务端
server2(172.25.61.2)		test 远程客户端
server3(172.25.61.3)		db 远程客户端
  1. 获取安装包,解决必要的依赖

     [root@server1 ~]# ls
     ansible-2.7.8-1.el7.noarch.rpm           python-httplib2-0.9.2-0.1.el7.noarch.rpm
     libtomcrypt-1.17-25.el7.x86_64.rpm       python-keyczar-0.71c-2.el7.noarch.rpm
     libtommath-0.42.0-5.el7.x86_64.rpm       python-paramiko-2.1.1-0.9.el7.noarch.rpm
     python2-crypto-2.6.1-13.el7.x86_64.rpm   sshpass-1.06-1.el7.x86_64.rpm
     python2-jmespath-0.9.0-1.el7.noarch.rpm
     [root@server1 ~]# yum install -y *
    
  2. 创建目录及文件

     [root@server1 ~]# useradd devops
     [root@server1 ~]# su - devops
    

ansible服务端创建一个普通用户,server2和server3创建同样的用户并配置密码,注意要保持三台机子创建的用户uid与gid要保持一致

[root@server2 ~]# useradd devops
[root@server2 ~]# passwd  devops
Changing password for user devops.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

创建一个目录来存放ansible服务的文件

	[devops@server1 ~]$ mkdir ansible
	[devops@server1 ~]$ ls
	ansible
	[devops@server1 ~]$ cd ansible/
	[devops@server1 ansible]$ ls
	ansible.cfg  inventory
	[devops@server1 ansible]$ cat ansible.cfg 
	[defaults]
	
	inventory	= inventory
	[devops@server1 ansible]$ cat inventory 
	[test]
	server2
	
	[db]
	server3
	
	[webservers:children]
	test
	db

server2属于web组,server3主机属于db组,名字可以自己定义,这两组都属于webserver组。

  1. 添加本地解析

     vim /etc/hosts
     172.25.61.1   server1
     172.25.61.2   server2
     172.25.61.3   server3
    
  2. 免密操作

ansible的远程部署是通过ssh来进行通行的,所以服务端和客户端之间要做免密操作。

[devops@server1 ~]$ ssh-keygen 
[devops@server1 ~]$ ssh-copy-id server2
[devops@server1 ~]$ ssh-copy-id server3

在这里插入图片描述

  1. 测试通信

列出所有主机列表]

[devops@server1 ansible]$ ansible all --list-hosts
  hosts (2):
    server3
    server2

检测连接情况,-m表示调用模块,这里调用ping模块

[devops@server1 ansible]$ ansible all -m ping
server2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

ansible常用模块

使用ansible的模块如何获取帮助,ansible-doc加上模块来查看帮助
在这里插入图片描述

ansible常用命令及参数

ansible命令基础:ansible <主机或定义的分组> [选项]
-M 指定模块路径
-m 使用模块,默认command模块
-a 模块参数
-i inventory文件路径或可执行脚本
-k 使用交互式登陆密码
-e 定义变量vim
-v 详细信息,-vvvv开启debug模式

[devops@server1 ansible]$ ansible test -a  'df -h'
server2 | CHANGED | rc=0 >>
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   17G  1.1G   16G   6% /
devtmpfs               486M     0  486M   0% /dev
tmpfs                  497M     0  497M   0% /dev/shm
tmpfs                  497M   13M  484M   3% /run
tmpfs                  497M     0  497M   0% /sys/fs/cgroup
/dev/sda1             1014M  121M  894M  12% /boot
tmpfs                  100M     0  100M   0% /run/user/0
tmpfs                  100M     0  100M   0% /run/user/1001

ansible server1 -m setup #产看指定主机server1上的facts变量信息
ansible * -m setup #查看指定的所有主机上的facts变量信息

ansible-doc -l:列出有哪些可用的模块,按q退出
ansible-doc -l | wc -l:列出有多少个可用的模块
ansible-doc -l | grep user:列出与user有关的模块
ansible-doc user:查看user模块的帮助文档,按q退出。也可以在最后一行输入/passwd,来过滤与passwd有关的内容
ansible test -a 'df -h'  在test组执行df -h命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值