青蛙小白

使用Ansible部署etcd 3.2高可用集群

本文内容已过期 之前写过一篇手动搭建etcd 3.1集群的文章《etcd 3.1 高可用集群搭建》,最近要初始化一套新的环境,考虑用ansible自动化部署整套环境, 先从部署etcd 3.2集群开始。 需要部署etcd的主机信息如下: node1 192.168.61.11 node2 192.168.61.12 node3 192.168.61.13 1.配置管理项目目录结构 ├── inventories │ ├── staging │ │ ├── group_vars │ │ │ ├── all.yml │ │ │ └── etcd-nodes.yml │ │ ├── host_vars │ │ │ ├── node1.yml │ │ │ ├── node2.yml │ │ │ └── node3.yml │ │ └── hosts │ └── production ├── roles │ ├── common │ │ ├── defaults │ │ │ └── main.yml │ │ └── tasks │ │ └── main.yml │ ├── etcd3 │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── make-ca-cert.sh │ ├── meta │ │ └── main.yml │ ├── tasks │ │ ├── create_etcd_user.yml │ │ ├── etcd-restart.yml │ │ ├── etcd-start.yml │ │ ├── etcd-stop.yml │ │ ├── gen-etcd-certs.yml │ │ ├── gen-etcd-systemd.yml │ │ ├── install_etcd_bin.yml │ │ └── main.yml │ └── templates │ ├── etcd.conf.j2 │ └── etcd.service.j2 ├── deploy-etcd3.yml roles/etcd3/defaults/main.yml:

团队环境:Jenkins版本升级和插件更新

Jenkisn官方提供两种支持方式的版本: LTS(Long-term-Support)版本:大约每12周更新一次 Weekly Release:每周更新一次,每个版本会有一些enhancement和bug fix 我们使用的是Weekly版本,这里记录一下Jenkins版本的升级和插件更新。 最初我们是使用rpm安装的Jenkins,这种安装方式jenkins.war被默认安装到/usr/lib/jenkins下。 升级Jenkins的版本只要将这个目录的jenkins.war替换成新的版本,重启Jenkins服务即可。

Ansible playbook入门

playbook是Ansible进行配置管理的基本组件。 第一个playbook Ansible playbook的文件格式为yaml,具体yaml的语法可以参考这里。 下面我们编写一个使用yum安装nginx的playbook作为入门,nginx.yaml的内容如下: --- - hosts: web-servers tasks: - selinux: state=disabled - name: Add repository yum_repository: name: nginx baseurl: http://nginx.org/packages/centos/7/$basearch/ gpgcheck: no enabled: yes description: nginx repo - name: Install nginx yum: name=nginx state=present - name: Copy nginx.conf template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s' notify: - Restart nginx handlers: - name: Restart nginx systemd: name=nginx state=restarted enabled=yes - hosts: web-servers定义了该playbook的目标主机,这里指定了资源清单文件/etc/ansible/hosts中的web-servers组,如果目标是所有主机则可以使用all tasks:定义该playbook的task集合,可以使用ansible-playbook nginx.yaml --list-task打印playbook中的task。 - selinux: state=disabled定义了一个名称为selinux的task,使用Ansible的selinuxmodule禁用目标主机上的色Linux。 - name: Add repository定义的task使用Ansible的yum_repositorymodule向目标主机添加nginx官方的yum repo - name: Install nginx定义的task使用Ansible的yummodule在各个目标主机上安装nginx - name: Copy nginx.conf定义的task使用Ansible的templatemodule将nginx.conf.j2模板生成nginx.conf配置文件并推送到各个目标主机。notify指定了配置文件推送成功且配置文件内容发生变化侯触发名称为Restart nginx的handler。 handlers中只有一个Restart nginx的handler,使用Ansible的systemdmodule实现重启nginx服务。 nginx.conf.j2模板是python的Jinja2模本,这里作为一个入门的例子,先不考虑模板功能,直接使用一个期望的nginx配置文件的内容即可。