linux自动化运维平台ansible部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux自动化运维平台ansible部署相关的知识,希望对你有一定的参考价值。

前言

运维的发展方向,集中化,自动化,标准化,虚拟化,分布式。
本文展示的就是自动化运维的发展方向的工具:ansible。ansible有很多优点,仅需要ssh和python即可使用,不需要客户端,功能强大,模块丰富,上手容易门槛低,基于python开发,更容易做二次开发。

操作使用环境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

结构拓扑图
技术分享图片

安装软件和其他准备工作

可以源码安装,或者yum安装

下面是个人使用的ansible 软件,解压后可以直接作为yum源使用
链接: https://pan.baidu.com/s/1hFly3DnPS01ih60kSh5CIQ 密码: 6ge6
宿主机:

[[email protected] ~]# unzip ansible.zip                             //解压
[[email protected] ~]# mkdir -p  /var/ftp/yum/myyum       
//主要是创建yum源目录,用ftp共享给其他主机使用,但是前提要有ftp服务,也可以使用http服务共享yum
[[email protected] ~]# mv  ansible/\*  /var/ftp/yum/myyum   
//把解压的文件拷贝到ftp共享的目录下

主机:manager10

[[email protected] ~]# yum-config-manager --add ftp://192.168.1.1/yum/myyum    
//添加新的yum
[[email protected] ~]# yum clean all                    // 清除yum缓存
[[email protected] ~]# yum repolist   
源标识                         源名称                                           状态
192.168.1.1_yum_myyum_         added from: ftp://192.168.1.1/yum/myyum/            16
192.168.1.1_yum_rh7dvd_        added from: ftp://192.168.1.1/yum/rh7dvd/        4,620
repolist: 4,636
[[email protected] ~]# yum -y install ansible               //用yum安装ansible
[[email protected] ~]# rpm -qc ansible             
//查看配置文件有哪些,实用技能,不知道配置文件软件也可以用这条命令查询配置文件
/etc/ansible/ansible.cfg
/etc/ansible/hosts
[[email protected] ~]# vim /etc/hosts           //设置本机的DNS解析
192.168.1.10 manager10                            //ip地址和域名之间用空格隔开
192.168.1.20 nginx20
192.168.1.30 web30
192.168.1.40 web40
192.168.1.50 db50
192.168.1.60 db60
[[email protected] ~]# ssh-keygen -t rsa    //创建密钥对,后面要用

注:需要关闭selinux和firewalld

配置文件

配置文件:
/etc/ansible/ansible.cfg
/etc/ansible/hosts
可以按照如下修改配置文件。

[[email protected] ~]# vim /etc/ansible/hosts 
[web]                //定义web组
web30  //组成员,可以使用域名或者ip地址,我把主机名和域名写成一样,方便记忆使用
web40
[db]                                     //定义db组
db50
db60
[app:children]            //定义父组app,及指定子组
web
db
[app:vars]        //父组app下所有成员,配置信息,包括登陆用户和密码
ansible_ssh_user="root"
ansible_ssh_pass="123456"
[nginx]  
nginx20  ansible_ssh_user="root" ansible_ssh_pass="123456"
 //定义nginx主 ,配置内容分别表示:组成名名,登陆用户名,登陆密码。 还可以制定登陆端口ansible_ssh_port="22"
[[email protected] ~]# vim /etc/ansible/ansible.cfg      //ansible 配置文件
host_key_checking = False                 
//61行的注释去掉,不读取/root/.ssh/known_hosts 文件,就不用首次登陆输入yes

ansible的使用

ansible配置完成,不需要启动服务,可以直接使用。
执行命令后的提示颜色,如果没有内容修改成功显示的颜色是绿色,如果内容修改并且成功显示颜色是橙色。

[[email protected] ~]# ansible all --list-hosts   
  hosts (5):
    web30
    web40
    db50
    db60
    nginx20
//查看所有可以配置的主机,或者可以直接查看web,db。出现下面内容,没有报错就是没有问题。

使用模块
ansible命令格式
ansible 主机分组 -m 模块 -a ‘命令和参数’
使用ansible-doc 模块名 查看模块帮助信息
ansible-doc -l 列出所有模块

[[email protected] ~]# ansible all -m ping     //使用ping模块,查看是否在线
web40 | SUCCESS => {                               //出现seccess就是成功了
    "changed": false,                                   //没有修改内容
    "ping": "pong"                                       //ping和pong是一对
}
[[email protected] ~]# ansible all  -m authorized_key -a "user=root exclusive=true manage_dir=true key=‘$(< /root/.ssh/id_rsa.pub)‘" -k
// 给所有主机部署密钥, -m module 模块    -a agrs 模块的参数    -k   ask需要输入密码

常用模块:
shell ,copy,yum,service

[[email protected] ~]# ansible web -m shell -a "mkdir /root/aaaa"      //在web组下的web30和web40下创建/root/aaaa目录
[[email protected] ~]# ansible web -m shell -a "ls /root"    //验证创建情况
[[email protected] ~]# ansible web -m shell -a "ls /root"
[[email protected] ~]# ansible web -m copy -a "src=/root/test.txt dest=/root/"
//将本地文件复制到远程主机,拷贝文件夹时,src如果有“/“ 结尾拷贝目录下内容,和rsync类似
[[email protected] ~]# ansible web -m yum -a "name="httpd" state=installed"   //安装httpd,删除是removed
[[email protected] ~]# ansible web -m service -a "name="httpd" enabled="yes" state="started""      //开启httpd服务,开机自启
[[email protected] ~]# yum -y install nmap        //安装扫描软件nmap
[[email protected] ~]# nmap -sS 192.168.1.30,40     //使用nmap半开式扫描
Nmap scan report for web30 (192.168.1.30) 
Host is up (0.000090s latency).
Not shown: 998 closed ports        //默认扫描前10000个端口
PORT   STATE SERVICE
22/tcp open  ssh          //ssh开启
80/tcp open  http        //web开启
MAC Address: 74:52:86:86:02:01 (Unknown)  

其实到现在ansible自动化运维平台部署基本完成,接下来就是ansible的灵活使用。

共勉:I hear and I forget. I see and I remember. I do and I understand!

以上是关于linux自动化运维平台ansible部署的主要内容,如果未能解决你的问题,请参考以下文章

Ansible自动化运维实战在docker环境部署ansible管理平台awx

5python自动化运维——集中化管理平台Ansible

Linux中ansible自动化运维工具

3.1 自动化运维工具ansible

结合Ansible在AWS云计算平台上实现运维自动化

基于Ansible+Docker快速实现DCOS云平台部署(有彩蛋)