简介

本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分。本文通过Jenkins,传参,调用playbook来初始化系统。

Github地址

ansible的roles将功能、变量等抽象为一个个子模块,并在主配置文件中按顺序调用模块,形成一个功能集合,这样做的好处是可以复用各个模块,组合为新的playbook,项目代码地址https://github.com/WilliamGuozi/ansible-init,欢迎使用交流,也可以丰富它。

ansible-init仓库介绍

该初始化内容应放在/etc/ansible/目录下

  • 其中inventory目录中放置主机host(可参考文章https://www.cnblogs.com/William-Guozi/p/ansible_hosts.html
  • key目录中放置deploy的公钥,使用中需要替换为你们的deploy的公钥
  • roles中可放置多种需要批量运行的roles,比如说系统初始化,安装软件等

  • 其中文件目录ansible-init/roles/init_sys/site.yaml中,指定了各个角色内容。
  • 目前包含:keys:同步deploy公钥到authorized_key
  • hostname:设定服务器的hostname
  • yum:安装一些常用的软件
  • jdk:安装JDK环境
  • optimize:优化系统参数
  • zabbixaggent:安装zabbix-agent并自动加入监控(可参考https://www.cnblogs.com/William-Guozi/p/zabbix-active.html
  • reboot:重启计算机

以上角色可根据需求调整更改,并可通过主控文件 ansible-init/roles/init_sys/site.yaml 控制是否调用个别角色。



Jenkins Job创建

参数化构建

需要传递两个参数,一个是host,为inventory中的主机,即需要初始化的目标主机;另一个是hostname,即需要将目标主机的主机名设置为什么

Invoke Ansible Playbook

将上述两个参数传递给ansible

Jenkins构建后输出结果

  1. 初始化Started by user williamguozi
  2. [EnvInject] - Loading node environment variables.
  3. Building on master in workspace /var/lib/jenkins/workspace/ops-demo-ansible-roles
  4. [ops-demo-ansible-roles] $ ansible-playbook /etc/ansible/roles/init_sys/site.yaml -f 5 -e host=192.168.30.100 -e hostname=ops-demo-100
  5. PLAY [192.168.30.100] **********************************************************
  6. TASK [hostname : centos 7 permanent modify hostname] ***************************
  7. Friday 17 August 2018 16:43:49 +0800 (0:00:00.074) 0:00:00.074 *********
  8. changed: [192.168.30.100]
  9. TASK [yum : setup epel-release] ************************************************
  10. Friday 17 August 2018 16:43:50 +0800 (0:00:01.144) 0:00:01.218 *********
  11. ok: [192.168.30.100]
  12. TASK [yum : install basic software] ********************************************
  13. Friday 17 August 2018 16:43:51 +0800 (0:00:01.217) 0:00:02.436 *********
  14. ok: [192.168.30.100] => (item=[u'gcc', u'gcc-c++', u'gdb', u'python2-pip', u'iotop', u'telnet', u'ntpdate', u'mutt', u'msmtp', u'wget', u'vim', u'htop', u'docker', u'rsync', u'lrzsz', u'psmisc', u'net-tools', u'curl', u'jq', u'lsof', u'nginx', u'tree'])
  15. TASK [yum : enabled service] ***************************************************
  16. Friday 17 August 2018 16:44:06 +0800 (0:00:14.725) 0:00:17.162 *********
  17. ok: [192.168.30.100] => (item=docker)
  18. ok: [192.168.30.100] => (item=nginx)
  19. TASK [yum : Time synchronization] **********************************************
  20. Friday 17 August 2018 16:44:08 +0800 (0:00:02.491) 0:00:19.653 *********
  21. changed: [192.168.30.100]
  22. TASK [jdk : check jdk version] *************************************************
  23. Friday 17 August 2018 16:44:17 +0800 (0:00:09.038) 0:00:28.692 *********
  24. changed: [192.168.30.100]
  25. TASK [jdk : debug check jdk] ***************************************************
  26. Friday 17 August 2018 16:44:18 +0800 (0:00:01.171) 0:00:29.864 *********
  27. ok: [192.168.30.100] => {
  28. "resultt.stdout": "1.8.0_144"
  29. }
  30. TASK [jdk : Checking /data/soft directory] *************************************
  31. Friday 17 August 2018 16:44:18 +0800 (0:00:00.043) 0:00:29.908 *********
  32. skipping: [192.168.30.100]
  33. TASK [jdk : Download jdk file] *************************************************
  34. Friday 17 August 2018 16:44:18 +0800 (0:00:00.021) 0:00:29.929 *********
  35. skipping: [192.168.30.100]
  36. TASK [jdk : Checking directory] ************************************************
  37. Friday 17 August 2018 16:44:19 +0800 (0:00:00.020) 0:00:29.949 *********
  38. skipping: [192.168.30.100]
  39. TASK [jdk : Extract archive] ***************************************************
  40. Friday 17 August 2018 16:44:19 +0800 (0:00:00.021) 0:00:29.971 *********
  41. skipping: [192.168.30.100]
  42. TASK [jdk : create java link] **************************************************
  43. Friday 17 August 2018 16:44:19 +0800 (0:00:00.021) 0:00:29.992 *********
  44. skipping: [192.168.30.100]
  45. TASK [jdk : create java command link] ******************************************
  46. Friday 17 August 2018 16:44:19 +0800 (0:00:00.020) 0:00:30.012 *********
  47. skipping: [192.168.30.100]
  48. TASK [jdk : java_profile config] ***********************************************
  49. Friday 17 August 2018 16:44:19 +0800 (0:00:00.021) 0:00:30.034 *********
  50. skipping: [192.168.30.100] => (item=export JAVA_HOME=/usr/local/jdk)
  51. skipping: [192.168.30.100] => (item=export PATH=\$JAVA_HOME/bin:\$PATH)
  52. TASK [optimize : disable selinux] **********************************************
  53. Friday 17 August 2018 16:44:19 +0800 (0:00:00.034) 0:00:30.069 *********
  54. ok: [192.168.30.100]
  55. TASK [optimize : init timezone] ************************************************
  56. Friday 17 August 2018 16:44:20 +0800 (0:00:01.280) 0:00:31.349 *********
  57. ok: [192.168.30.100]
  58. TASK [optimize : ulimit configure temporary] ***********************************
  59. Friday 17 August 2018 16:44:21 +0800 (0:00:00.904) 0:00:32.254 *********
  60. changed: [192.168.30.100]
  61. TASK [optimize : modify configure of ulimit for ever] **************************
  62. Friday 17 August 2018 16:44:22 +0800 (0:00:00.924) 0:00:33.178 *********
  63. ok: [192.168.30.100]
  64. TASK [optimize : shutdown mail notify] *****************************************
  65. Friday 17 August 2018 16:44:25 +0800 (0:00:03.030) 0:00:36.209 *********
  66. changed: [192.168.30.100]
  67. TASK [optimize : shutdown firewalld service] ***********************************
  68. Friday 17 August 2018 16:44:26 +0800 (0:00:00.991) 0:00:37.200 *********
  69. ok: [192.168.30.100]
  70. TASK [optimize : history add config] *******************************************
  71. Friday 17 August 2018 16:44:27 +0800 (0:00:01.148) 0:00:38.349 *********
  72. ok: [192.168.30.100] => (item=HISTFILESIZE=3000)
  73. ok: [192.168.30.100] => (item=HISTTIMEFORMAT='%F %T ')
  74. ok: [192.168.30.100] => (item=HISTIGNORE="history:which")
  75. ok: [192.168.30.100] => (item=shopt -s histappend)
  76. ok: [192.168.30.100] => (item=PROMPT_COMMAND="history -a")
  77. ok: [192.168.30.100] => (item=export HISTTIMEFORMAT)
  78. TASK [optimize : history change config] ****************************************
  79. Friday 17 August 2018 16:44:31 +0800 (0:00:04.394) 0:00:42.744 *********
  80. ok: [192.168.30.100]
  81. TASK [optimize : Time synchronization] *****************************************
  82. Friday 17 August 2018 16:44:32 +0800 (0:00:00.748) 0:00:43.493 *********
  83. changed: [192.168.30.100]
  84. TASK [zabbixagent : cheching zabbix-agent] *************************************
  85. Friday 17 August 2018 16:44:41 +0800 (0:00:09.245) 0:00:52.738 *********
  86. changed: [192.168.30.100]
  87. TASK [zabbixagent : debug zabbix-agent] ****************************************
  88. Friday 17 August 2018 16:44:42 +0800 (0:00:00.959) 0:00:53.698 *********
  89. ok: [192.168.30.100] => {
  90. "result.stdout": "3.4.12"
  91. }
  92. TASK [zabbixagent : Install Repository with zabbix] ****************************
  93. Friday 17 August 2018 16:44:42 +0800 (0:00:00.044) 0:00:53.742 *********
  94. ok: [192.168.30.100]
  95. TASK [zabbixagent : install zabbix-agent] **************************************
  96. Friday 17 August 2018 16:44:44 +0800 (0:00:02.056) 0:00:55.799 *********
  97. ok: [192.168.30.100]
  98. TASK [zabbixagent : upload file aoubt process cpu & memory monitor] ************
  99. Friday 17 August 2018 16:44:46 +0800 (0:00:01.397) 0:00:57.197 *********
  100. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/scripts/', u'src': u'discovery_process.sh'})
  101. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/scripts/', u'src': u'process_check.sh'})
  102. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/zabbix_agentd.d/', u'src': u'userparameter_script.conf'})
  103. TASK [zabbixagent : modify configure of percona] *******************************
  104. Friday 17 August 2018 16:44:54 +0800 (0:00:08.736) 0:01:05.933 *********
  105. ok: [192.168.30.100] => (item={u'dest': u'/var/lib/zabbix/percona/scripts/', u'src': u'get_mysql_stats_wrapper.sh'})
  106. ok: [192.168.30.100] => (item={u'dest': u'/var/lib/zabbix/percona/scripts/', u'src': u'ss_get_mysql_stats.php'})
  107. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/zabbix_agentd.d/', u'src': u'userparameter_percona_mysql.conf'})
  108. TASK [zabbixagent : copy zabbix_agentd.conf status_tcp status_disk] ************
  109. Friday 17 August 2018 16:45:03 +0800 (0:00:08.813) 0:01:14.746 *********
  110. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/', u'src': u'zabbix_agentd.conf'})
  111. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/zabbix_agentd.d/', u'src': u'status_TCP.conf'})
  112. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/scripts/', u'src': u'tcp_status.sh'})
  113. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/zabbix_agentd.d/', u'src': u'userparameter_diskstats.conf'})
  114. ok: [192.168.30.100] => (item={u'dest': u'/etc/zabbix/scripts/', u'src': u'lld-disks.py'})
  115. TASK [zabbixagent : server start] **********************************************
  116. Friday 17 August 2018 16:45:18 +0800 (0:00:14.456) 0:01:29.203 *********
  117. ok: [192.168.30.100]
  118. PLAY RECAP *********************************************************************
  119. 192.168.30.100 : ok=24 changed=7 unreachable=0 failed=0
  120. Friday 17 August 2018 16:45:20 +0800 (0:00:02.636) 0:01:31.840 *********
  121. ===============================================================================
  122. yum : install basic software ------------------------------------------- 14.73s
  123. zabbixagent : copy zabbix_agentd.conf status_tcp status_disk ----------- 14.46s
  124. optimize : Time synchronization ----------------------------------------- 9.25s
  125. yum : Time synchronization ---------------------------------------------- 9.04s
  126. zabbixagent : modify configure of percona ------------------------------- 8.81s
  127. zabbixagent : upload file aoubt process cpu & memory monitor ------------ 8.74s
  128. optimize : history add config ------------------------------------------- 4.39s
  129. optimize : modify configure of ulimit for ever -------------------------- 3.03s
  130. zabbixagent : server start ---------------------------------------------- 2.64s
  131. yum : enabled service --------------------------------------------------- 2.49s
  132. zabbixagent : Install Repository with zabbix ---------------------------- 2.06s
  133. zabbixagent : install zabbix-agent -------------------------------------- 1.40s
  134. optimize : disable selinux ---------------------------------------------- 1.28s
  135. yum : setup epel-release ------------------------------------------------ 1.22s
  136. jdk : check jdk version ------------------------------------------------- 1.17s
  137. optimize : shutdown firewalld service ----------------------------------- 1.15s
  138. hostname : centos 7 permanent modify hostname --------------------------- 1.14s
  139. optimize : shutdown mail notify ----------------------------------------- 0.99s
  140. zabbixagent : cheching zabbix-agent ------------------------------------- 0.96s
  141. optimize : ulimit configure temporary ----------------------------------- 0.92s
  142. Finished: SUCCESS

完毕

参考文档

Ansible:roles初始化系统的更多相关文章

  1. Ansible--06 ansible roles

    Ansible roles roles不管是Ansible还是saltstack,我在写一键部署的时候,都不可能把所有的步骤全部写入到一个'剧本'文件当中,我们肯定需要把不同的工作模块,拆分开来,解耦 ...

  2. SQL Server 重新初始化系统数据库中的单引号问题

    在最近的数据库跨机房迁移中,由于硬件的限制,需要滚动式地将数据库一台台迁移到新机房,先在新机房搭建一个新环境,将数据迁移过去,再将旧机房的机器下架搬到新机房,重新配置后用于下一轮的升级,重新配置过程中 ...

  3. linux下的初始化系统systemd简科普

    systemd是什么?名字很奇怪,不认识. 扒一扒wiki,你就会知道我是谁了? 在下有眼不识泰山,原来你就是盘古老爷爷用的开天辟地大斧头啊. 贫穷不可怕,可怕的是贫穷限制了你的想象--------- ...

  4. S5PV210初始化系统时钟

    S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...

  5. ansible roles 目录规范

    我的ansible roles项目的目录结构: (ansible_venv) [root@localhost ansible_home]# tree ansible_playbooks/ ansibl ...

  6. 6.Ansible Roles角色实战

    ==Roles小技巧:== 1.创建roles目录结构,手动或使用ansible-galaxy init test roles 2.编写roles的功能,也就是tasks. nginx rsyncd ...

  7. Linux 初始化系统(init)- systemd

    wikipedia 浅析 Linux 初始化 init 系统 systemd 中文手册 fedoraproject - systemd 1. Systemd 简介 Systemd 是 Linux 系统 ...

  8. ansible roles 自动化安装

    例:  ansible roles 自动化安装memcached 文件目录结构如下: cat memcached_role.yml - hosts: memcached remote_user: ro ...

  9. ansible roles实践——安装nginx

    1.创建roles 在/etc/ansible/roles目录下 1.1 手动创建需要的目录 1.2 使用命令创建,用不到的目录可以创建为空目录,但不可以不创建. 创建目录[root@master] ...

随机推荐

  1. kubespy 用bash实现的k8s动态调试工具

    原文位于 https://github.com/huazhihao/kubespy/blob/master/implement-a-k8s-debug-plugin-in-bash.md 背景 Kub ...

  2. SpringBoot基于数据库的定时任务统一管理

    定时任务1 import lombok.extern.slf4j.Slf4j; /** * @author Created by niugang on 2019/12/24/15:29 */ @Slf ...

  3. Spring循环依赖的解决

    ## Spring循环依赖的解决 ### 什么是循环依赖 循环依赖,是依赖关系形成了一个圆环.比如:A对象有一个属性B,那么这时候我们称之为A依赖B,如果这时候B对象里面有一个属性A.那么这时候A和B ...

  4. Linux之shell编程的基本使用

    1.Shell shell是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序 2.shell编程打印hello world 2.1 代码部分 #!/bin/ba ...

  5. Spring中的beanPostProcess的作用

    BeanPostProcessor是Spring框架中非常重要的bean之一.贯穿在Spring容器中bean的初始化的整个过程. Spring中的beanpostProcess体系结构如下: 可以看 ...

  6. Webpack实战(三):作为前端你不得不懂的Webpack资源入口和出口的配置

    关于Webpack前两篇跟大家分享的主要是Webpack的一些基本的配置,今天开始我们详细了解一下有关Webpack的各种配置,今天主要跟大家分享的是Webpack的资源入口和资源出口的配置. 如果想 ...

  7. 【WPF学习】第十三章 理解路由事件

    每个.NET开发人员都熟悉“事件”的思想——当有意义的事情发生时,由对象(如WPF元素)发送的用于通知代码的消息.WPF通过事件路由(event routing)的概念增强了.NET事件模型.事件路由 ...

  8. (转) XSS Attacks – Exploiting XSS Filter

    中文翻译: from wooyun'drops 0x00 前言 这又是一篇来自全职赏金猎人Masato kinugawa的神作.一次双杀,用一篇报告拿下了两个CVE,分别是CVE-2015-6144和 ...

  9. NOI3.1 6377:生日相同 2.0

    描述 在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日.试找出所有生日相同的学生. 输入 第一行为整数n,表示有n个学生,n ≤ 180.此后每行包含一个字符 ...

  10. MySql配置环境变量

    完成后安装好MySQL,为MySQL配置环境变量. 0)在我的电脑上点击右键选择属性-->高级系统设置-->环境变量1)新建MYSQL_HOME变量,并配置:D:\Develop\mysq ...