第一次使用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 オブションを利用すればよい
广告
将在 10 秒后关闭
bannerAds