关于 ansible 的使用详解,主要涉及到的是 playbook.
|
|
关于hosts文件(inventory 文件)
在 inventory 主文件中保存所有的变量并不是最佳的方式.还可以保存在独立的文件中,这些独立文件与 inventory 文件保持关联. 不同于 inventory 文件(INI 格式),这些独立文件的格式为 YAML
换句话说,如果hosts里的机器等配置特别多,特别杂,适合单开新的 host_vars 和 group_vars来定义配置,但是如果机器很少,甚至只有一台,那么完全可以直接用 hosts 就好了
比如可以转成如下的形式:
执行的一个playbook的命令:
ansible-playbook -i hosts --become --become-method sudo -f 2 -e "app_version=$(VERSION)" site.yml
简单配置解释
- -i 后面跟的是inventory配置文件(机器与机器组)
- –become 是一个bool值,因此后面不跟参数,这个参数的意思指的是ansible在目标机器上运行时需要进行提权运行(切换更高的user),true代表提权
- –become-method 后面接的参数是提权后的用户,后面接的参数代表提权为 root 用户
- -f 并行任务数 参数2 代表并行为2
- -e 在Playbook中引入外部参数变量, 这里定义好的app_version变量,可以直接在 role 里使用
- site.yml 配置文件,携带着需要在哪些机器上运行 playbook 和运行哪些role的配置信息,以及一些role里使用的变量文件
playbook 可携带的参数详解
ansible配置文件,ansible.cfg
Ansible 的配置文件的查找顺序如下:
- 环境变量 ANSIBLE_CONFIG
- 当前目录下的 ansible.cfg (这个比较重要,一般用这个比较多)
- home 目录下的 ~/.ansible.cfg
- /etc/ansible/ansible.cfg
Ansible 使用找到的第一个文件,忽略其余的。
配置文件的几个组成部分:
- [defaults] —>通用默认配置
- [privilege_escalation] —> 提权配置
- [paramiko_connection]
- [ssh_connection]
- [accelerate]
例子:
|
|
hosts 文件 就是我们说的inventory文件,用来定义主机和主机组
小例子:
- 第一行与第二行,定义了主机 IP ,然后使用 Inventory 内置变量定义了 SSH 登入密码。
- 第三行定义了一个组叫 docker。
- 第四行定义了 docker 组下面 3 台主机从 10.0.0.101 ~ 10.0.0.103 。
- 第五行与第六行针对 docker 组使用 Inventory 内置变量定义 SSH 登入密码。
- 第七行与第八行定义了一个组 ansible,这个组下面包含 docker 组。
inventory 的内置参数如下:
需要执行的playbook配置
例子:
这里附一个对应的inventory文件的例子:
|
|
最开始有这个项目的tree,下面的解释可以对照着看。
解释:
- hosts就是我们hosts文件里定义的主机和主机组名字,比如这里就是 inventory里的 goldeneye-test
- roles:后面会讲到,会有一个roles的文件夹,放置的是对应的playbook的role,这个就是这个playbook需要执行的role的列表
- vars: 会在运行的role中用到的变量值
git克隆问题
使用用户名和密码
|
|
使用 person access token
|
|
简单例子:
一个本地运行的playbook(如果是在本地机器运行的命令,需要添加local参数)
这个小例子完成了一个Python程序打包之后,上传到需要部署的机器上去的步骤
|
|
|
|
|
|
|
|