ansible 自动化运维实现角色定制

来源:互联网 发布:机械制图网络课程 编辑:程序博客网 时间:2024/04/29 11:41

一、实验环境

三台centos7.3

角色集合:Nginx httpd MySQL

ansible:

172.17.250.200

Nginx:

172.17.250.201

172.17.250.211

httpd:

172.17.250.222

MySQL:

172.17.250.111


二、下载安装ansible

修改配置文件定义主机组

vim /etc/ansible/hosts

[webservers]
 172.17.250.201
172.17.250.211

[MySQL]

172.17.250.111

[httpd]

172.17.250.222


三、免密登录

虽然ansible支持其他主机认证方式,但是我们最常用的的还是基于秘钥的认证:
1、首先生成秘钥
ssh-keygen -t rsa -P ‘’

2、然后向主机分发秘钥:
ssh-copy-id root@ #                         @后面跟主机名或者IP地址


四、ansible自动安装Nginx

1、在roles目录下生成对应的目录结构
mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}


2、准备Nginx的配置文件模板 后缀必须是.j2

cp /etc/nginx/nginnx.conf /temp/nginx.conf.j2      

vim  /temp/nginx.conf.j2 


3、在各自files目录下存放用于安装的rpm包以Nginx为例。如果被安装的服务器可以链接yum仓库 这里可以不写,在tasks文件下的main.yml不用写cp段

nginx-1.10.2-1.el7.ngx.x86_64.rpm

4、定义/tasks/main.yml的配置文件

- name: cp      copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.10.2- 1.el7.ngx.x86_64.rpm   ## 如果使用yum源安装不需要这一字段- name: install      yum: name=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest    ## 如果使用yum 源安装红色字段直接写服务名- name: conf      template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf    ## 模板需要写绝对路径      tags: nginxconf      notify: new conf to reload                        ##  模板发生改变会触发动作- name: start service      service: name=nginx state=started enabled=true

5、修改变量文件
vim  vars/main.yml 添加变量

nginx_port: "8888"   ## 模板中使用的变量

6、定义handlers文件

vim handlers/main.ym

- name: new conf to reload      service: name=nginx state=restarted    ##触发的动作

7、定义/etc/ansible/nginx.yml的playbook文件

- hosts: webservers   ## 与ansable hosts 文件中定义的主机组名相同       remote_user: root       roles:            - nginx
同理配置其他role,同一角色的主机放在一个主机组

8 运行



roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。


files/:存储由copy或script等模块调用的文件;


tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;


handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用;


vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;


templates/:存储由template模块调用的模板文本;


meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;


default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;



yml语法格式
变量引用双花括号 前后有空格
符号后面有空格 

原创粉丝点击