Ansible与CoreOS
最近开始关注Ansible与CoreOS的操作,在网上搜索了一圈,主要发现如下几个文章和参考代码:
- Provisioning CoreOS with Ansible: Basic Setup
- defunctzombie / coreos-ansible-example
- tazjin / coreos-ansible
- defunctzombie / ansible-coreos-bootstrap
研读总结后,其要点如下:
- Ansible操作CoreOS时的Python运行环境
- 文件相关的同步及部署
- cloudinit相关的user_data配置文件生成及部署
- systemd/fleet/docker相关Unit/Service等的配置及状态
下面就挨个解释一下:
CoreOS端Python运行环境配置
上面相关的两篇文章分别采用了两种不同的配置方式:
-
直接下载pypy运行环境到~/bin目录,并设置ansible的python解释器变量为
"PATH=~/bin:$PATH python"
-
采用CoreOS自带的toolbox方式,使用toolbox里边的python环境,并设置ansible的python解释器变量为(原文是设置了/opt/bin/python这个脚本)
toolbox --bind=/home:/home python
这两种方式在最新的ansible版本上都有问题(2.3.1),主要是创建子进程时取的程序名不对,这里我采取的对策是:
1. python脚本部署到 /opt/bin/ 目录下(该目录缺省就在CoreOS登录后的PATH中)
2. 给play设置environment的PATH变量,增加/opt/bin目录;
3. 设置ansible_python_interpreter变量为python,而非默认的/usr/bin/python
另外需要注意的是,在最新的fedora:latest镜像中,默认安装的是python3,所以ansible_python_interpreter的值要设置为python3,同时/opt/bin/python也要修改为/opt/bin/python3。
此处有坑:
由于toolbox脚本采用rkt进行fetch相关的docker容器,而fetch时是直接访问自己的url进行下载,所以你懂的,伟大的墙,时好时坏,时快时慢,这个问题以及toolbox相关坑我统一总结到另外一篇。
文件相关的同步及部署
采用toolbox方式时,文件同步的CoreOS端,要添加/media/root前缀,原因是toolbox脚本执行时映射系统目录到/media/root下了,具体可参考其源码(很短,很精悍)。
cloudinit相关的user_data配置文件生成及部署
同步/部署方式同上,目标位置是[/media/root]/var/lib/coreos-install/user_data
systemd/fleet/docker相关Unit/Service等的配置及状态
这个貌似没什么特别的,就不专门写了。
Written on July 25, 2017