通过ansible安装etcd集群,ansibleetcd集群


 最近打算用ansible写部署HA的k8s集群,部署etcd集群是第一步,写了一个部署etcd集群的role,特记录下来。

1  创建相关目录

 

2  创建ansible inventory文件,文件里需要写etcd集群的每个member的名字作为主机变量,另外环境写的是需要执行的主机的主机名,需要主机名写入/etc/hosts文件或者dns解析。

 

3 把etcd集群的初始化信息写入group变量。

 

4  roles中etcd.conf的template对变量的引用

 

5 执行playbook

 

6、执行结果

 

7 总结分析 

        7.1  利用ansible执行部署或者变更,前提是对某个应用手工部署非常了解,部署流程和配置项了然如胸,在此基础上,把一些手工执行的命令用ansible对应模块实现,仅此而已。

       7.2  etd集群role中tasks文件的main.yml,操作无非是传输文件,创建目录,用户等,难点在etcd集群启动配置中,ETCD_NAME(etcd启动的--name参数)是每个主机标识自己在集群中名字的,在集群中要唯一,适合作为每个主机自己的变量,但是ETCD_INITIAL_CLUSTER(etcd启动的-initial-cluster参数)又是group参数,且是建立每个主机变量组合的基础上,笔者搜索很多ansible脚本,实现都是将ETCD_INITIAL_CLUSTER在变量中写死(笔者上述演示基于此重方法.group_vars中写死变量),灵活性不够。

https://github.com/gjmzj/kubeasz/blob/master/example/hosts.m-masters.example

https://github.com/gjmzj/kubeasz/blob/master/roles/etcd/templates/etcd.service.j2

   

 

 

7.3  将主机变量组合为group变量的解决办法(利用jinja2的macro方式)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下载:http://download.csdn.net/download/qqhappy8/10217937

 

参考:

1  https://github.com/kubernetes/contrib/tree/master/ansi

 

相关内容

    暂无相关文章