ansible运维自动化环境搭建

ansible是开源工具,底层是用python写的

ansible也有web界面,可以直接鼠标点就可以,但是web界面收费

所以大部分企业不会用web界面

AnsibleAnsible的核心程序

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

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

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

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

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

Ansible的优点:

  • Stupied Simple ,上手简单,学习曲线平滑
  • SSH by default ,安全,无需安装客户端
  • 配置简单、功能强大、扩展性强
  • 支持API及自定义模块,可通过Python轻松扩展
  • 通过Playbooks来定制强大的配置、状态管理
  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
  • 幂等性:同样的操作不会重复执行,只会将改变了的再次执行。

Ansible的环境搭建:

需要2+台虚拟机,我是用三台虚拟机为大家讲解;

一台为ansible端,其余为client,测试使用。

前提关闭防火墙,在一个网段,可以互相ping通。

ansible端:

1.安装扩展软件包源和ansible软件包:

# yum -y install epel-release

# yum clean all

# yum makecache

# yum -y install ansible

2.编辑ansible配置文件:(设置无密码登录)

3.在三台虚拟机上执行创建密钥命令

# ssh-keygen

会生成两个文件,公钥和私钥

 

4.然后将公钥文件拷贝在测试机上并指定路径(路径是规定,就得这么写)

# scp id_rsa.pub root@192.168.29.138:/root/.ssh/authorized_keys

测试:ssh连接客户机ip,不需要输入密码就成功!

# ssh 客户机ip

# ssh 192.168.29.139

5.配置文件:/etc/ansible/hosts:记载着需要管理的主机的信息

添加组:

[xxxx] ——可以随意命名,但是后期要调用,尽量有象征性的命名;

192.168.29.137 ——需要管理的客户机的IP(也可以写域名)

192.168.29.138 ——需要管理的客户机的IP

 

6.测试:查看管理的两个主机通不通

# ansible group -m ping

 

7.ansible的简单命令使用:

·ansible-doc -l #查看支持的模块(命令)

·ansible-doc -s yum #查看yum模块用法

·nsible命令应用基础

ansible <host-pattern> [options]

      -f forks:启动并发线程数

      -m model_name:要使用的模块

      -a args:特有的参数

·查看client端是否正常ping通

ansible all -m ping

·查看客户端信息

ansible group -m setup

格式:ansible 组名/all -m 指定模块 -a '操作'

·copy服务器的1.sh文件到cient端的指定路径下

ansible group -m copy -a 'src=/root/1.sh dest=/root/test'

·创建test用户

ansible group -m user -a "name=test state=present" 

·删除test用户

ansible group -m user -a "name=test state=absent"

·yum安装

ansible group -m yum -a 'name=tree state=latest'

·停止httpd服务

ansible group -m service -a 'name=httpd state=stopped enabled=no'

·运行脚本

ansible group -m script -a '/tmp/test.sh'

·查看时间,是ansible默认模块,可以不指定模块。

ansible group -m command -a 'date'

playbook剧本:

playbook是运用ansible的一种非常强大的方式,是由多个play组成。

简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.

一下范例中的格式必须严格遵守,必须的必。

例一:基础

 

例二:变量

定义变量: vars

变量名=变量

调用变量:{{ 变量名 }}

例三:迭代

whith_item:要写在当前name的最下面

 

例四:触发器notify

 

例五:模板文件templates

先复制一个httpd.conf文件在主server任意目录下,

修改配置文件,调用变量,将端口号改为 {{ port }}

 

修改配置文件:/etc/ansible/hosts,指定两个客户机的端口

在两个客户端 ss -tnl 查看端口:

例六:单个任务执行tags

调用:ansible xxx.yml tags='add_user'

 

例七:角色roles:代码复用

mkdir -pv ansible_playbooks/roles/{webservers,dbservers}/{tasks,files,templates,meta,handlers,vars}

 

拓展:epel源 EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了,但在我们在使用epel时是需要安装它才可以了,EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,

安装之前:yum repolist

安装后:软件包多了很多

原文地址:https://www.cnblogs.com/dayle/p/9961894.html