设为首页 收藏本站
查看: 1138|回复: 1

[经验分享] ansible实战与配置

[复制链接]

尚未签到

发表于 2017-11-13 09:42:16 | 显示全部楼层 |阅读模式
playbook管理配置文件(总结)
- 将我们把一个服务部署到客户机上后(以nginx为例),我们经常需要更改一个配置文件,配置文件改好后我们还需要加载nginx的服务,这时就用到了管理配置文件,有时也会出现这样一个场景当我们更改了一个配置文件,发现改错了,需要回滚到之前的配置,并且对回滚的配置进行加载,这样我们应该怎么实现呢?也可以用playbook实现
- 如下是操作:
基本的目录创建与介绍
1
2
3
4
5
6
[iyunv@chy01 nginx_install]# mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令
[iyunv@chy01 ansible]# cd nginx_config/
[iyunv@chy01 nginx_config]# ls roles/
new  old
关于回滚,需要在执行playbook之前先备份一下旧的配置,所以对于老配置文件的管理一定要严格,千万不能随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一致



先把nginx.conf和vhosts目录放到files目录下面
1
[iyunv@chy01 conf]# cp -r nginx.conf vhost/ /etc/ansible/nginx_config/roles/new/files/



定义变量
1
2
[iyunv@chy01 conf]# vim /etc/ansible/nginx_config/roles/new/vars/main.yml
nginx_basedir: /usr/local/nginx



定义重新加载nginx服务
1
2
3
4
[iyunv@chy01 conf]# vim /etc/ansible/nginx_config/roles/new/handlers/main.yml  
[iyunv@chy01 conf]# vim /etc/ansible/nginx_config/roles/new/handlers/main.yml  
- name: restart nginx
  shell: /etc/init.d/nginx reload



定义需要cp的目录(核心任务)
1
2
3
4
5
6
7
8
[iyunv@chy01 conf]# vim /etc/ansible/nginx_config/roles/new/tasks/main.yml

- name: copy conf file
  copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644
  with_items:
    - { src=\'#\'" /nginx.conf }
    - { src=\'#\'" / }
  notify: restart nginx



最后定义总入口配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@chy01 conf]# vim /etc/ansible/nginx_config/update.yml
---
- hosts: chy02
  user: root
  roles:
  - new
[iyunv@chy01 conf]# ansible-playbook /etc/ansible/nginx_config/update.yml
[iyunv@chy01 conf]# ansible-playbook /etc/ansible/nginx_config/update.yml

PLAY [chy02] *********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [chy02]

TASK [new : copy conf file] ******************************************************************************************************
ok: [chy02] => (item={u'dest': u'conf/nginx.conf', u'src': u'nginx.conf'})
ok: [chy02] => (item={u'dest': u'conf/', u'src': u'vhost'})

PLAY RECAP ***********************************************************************************************************************
chy02                      : ok=2    changed=0    unreachable=0    failed=0   
//执行成功



现在进行变更的一个测试
1
2
3
4
5
6
7
8
[iyunv@chy01 files]# tail -2 nginx.conf
#   include vhost/*.conf;
  }
(更改一下nginx的配置文件)
[iyunv@chy02 ~]# tail -2 /usr/local/nginx/conf/nginx.conf
#   include vhost/*.conf;
  }
(在客户机上查看配置文件的include这行也是被注释的)



现在进行回滚操做
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[iyunv@chy01 files]# rsync -av  /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
sending incremental file list
files/
files/nginx.conf
files/vhost/
files/vhost/aaa.conf
files/vhost/ld.conf
files/vhost/proxy.conf
files/vhost/ssl.conf
files/vhost/test.com.conf
handlers/
handlers/main.yml
tasks/
tasks/main.yml
vars/
vars/main.yml

sent 5141 bytes  received 203 bytes  10688.00 bytes/sec
total size is 4430  speedup is 0.83
回滚操作就是把旧的配置覆盖,然后重新加载nginx服务, 每次改动nginx配置文件之前先备份到old里,对应目录为/etc/ansible/nginx_config/roles/old/files
[iyunv@chy01 files]#  vim /etc/ansible/nginx_config/rollback.yml //最后是定义总入口配置
---
- hosts: chy02
  user: root
  roles:
  - old
需要注意一点是在操作时必须要进行将你要操作的配置文件cp到old下才可以进行回滚,如果没有cp是不能进行回滚的)



希望看过的童鞋多多指教,谢谢!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-406937-1-1.html 上篇帖子: ansible批处理 下篇帖子: 通过ansible部署高可用LNAMMKP架构
累计签到:1 天
连续签到:1 天
发表于 2017-11-13 17:10:50 | 显示全部楼层
看不懂在弄什么

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表