第一次使用Ansible(第8章:角色:扩展剧本)
阅读「初次接触Ansible」时的笔记。
前文中提到的内容
1. Ansible的入门(第1章:简介)
2. Ansible的入门(第2章:Playbook:开始使用)
3. Ansible的入门(第3章:清单:描述服务器)
4. Ansible的入门(第4章:变量和事实)
5. Ansible的入门(第7章:复杂的Playbook)
卷。
-
- Ansibleでplaybookを複数のファイルに分割するための仕組み
-
- playbookをシンプルに記述し、再利用しやすくできる!
-
- 1つ以上のホストに割り当てるもの
例:データベースサーバとして動作するホストにdatabaseというロールを割り当てる
与”ロール”相关联的文件组。
パス説明roles/role_name/tasks/main.ymlタスク群roles/role_name/filesホストにアップロードされるファイル群roles/role_name/templatesJinja2のテンプレートファイル群roles/role_name/handlers/main.ymlハンドラ群roles/role_name/vars/main.ymlオーバーライドすべきでない変数群roles/role_name/defaults/main.ymlオーバーライドできる変数群roles/role_name/meta/main.ymlロールに関する依存対象の情報
找寻寿司卷的地方
-
- playbookが置かれているディレクトリのrolesディレクトリ
- システム全体にわたるロールは /etc/ansible/roles
在Playbook中的角色分配
在playbook中,可以设置roles部分,并指定角色列表。
- name: role example
hosts: webservers
pre_tasks:
- shell: echo 'hello'
roles:
- { role: example_role, app_port: "{{ app_default_port }}" }
tasks:
- shell: echo 'still busy'
post_tasks:
- shell: echo 'goodbye'
在上面的例子中,我们将角色example_role分配给主机webservers。
而且,在调用函数时,也可以通过{{ }}传递变量。
如果变量已经在 vars/main.yml 或者 defaults/main.yml 中被定义,那么传递的变量将会覆盖它。
前期任务 / 后期任务 /
如果想要在调用函数之前或之后执行某些任务,请使用该功能。
依存角色
-
- あるロールの依存する1つ以上のロールを指定できる
- 指定された依存対象のロールがまず実行されることを保証
在roles/role_name/meta/main.yml文件中,按照以下方式指定
dependencies
- { role: ntp, ntp_server=ntp.ubuntu.com }
Ansible银河
-
- 世界の誰かが書いてくれたロールを再利用可能に
Ansible Galaxy | Browse Rolesから探してもってこれる
在命令行上一次完成。
$ ansible-galaxy install role_name
-
- デフォルトでは/etc/ansible/rolesにインストールされる
- インストール先を指定する場合には -p path/to/roles オブションを利用すればよい