このブログ実験環境を参照してくださいansible展開との基本的なモジュール使用
YML文書を書く必要のプレイブックは、複数の役割、容易な管理に分かれています。
[devops@server1 ansible]$ mkdir roles
[devops@server1 ansible]$ ansible-galaxy list ##查看角色列表
[devops@server1 ansible]$ cd roles/
[devops@server1 roles]$ ansible-galaxy init httpd ##创建角色
- httpd was created successfully
私たちは、生成されたディレクトリ内のファイルやディレクトリを見ることができます。
役割 | 効果 |
---|---|
ファイル | スクリプトやモジュールによって呼び出されたファイルコピーモジュールを格納するために使用されます。 |
テンプレート | Jinjia2は、テンプレートモジュールが自動的にこのディレクトリにjinjia2テンプレートファイルを検索し、テンプレートを格納するために使用されます。 |
タスク | このディレクトリには、main.ymlファイルが含まれているこのロールのタスクリストを定義する必要があり、使用することができ、この文書では、このディレクトリにある他のタスクのファイルが含まれています。 |
ハンドラ | このディレクトリには、この役割トリガ条件を実行するアクションを定義するmain.ymlファイルを含める必要があります。 |
その | このディレクトリには、この役割で使用される変数を定義するmain.ymlファイルを含める必要があります。 |
デフォルト | このディレクトリは、現在のロールにデフォルトの変数を設定するために使用main.ymlファイルを、含まれている必要があります。 |
メタ | このディレクトリには、この役割とその依存関係の特別な設定を定義するmain.ymlファイルを含める必要があります。 |
私たちは、これらの役割の脚本が実際に以前に使用したコードの導入サービスなどの異なるディレクトリのhttpd何にも長いYML別のファイルとなっているだろうが見つかりました:
---
- hosts: webservers ##声明作用的主机
vars: ##角色1
http_port: 8080
tasks: ##角色2
- name: install httpd
yum:
name: httpd
state: latest
- name: create index.html
copy:
content: "{{ ansible_facts['hostname'] }}\n"
dest: /var/www/html/index.html
tags: index
- name: configure httpd
template:
src: templates/httpd.conf
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: 644
notify: restart httpd
- name: start httpd
service:
name: httpd
state: started
enabled: true
- name: start firewalld
service:
name: firewalld
state: started
enabled: true
- name: configure firewalld
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
handlers: ##角色3
- name: restart httpd
service:
name: httpd
state: restarted
私たちは、上記のコードは、役割のVARS、タスク、上記のコードの下にあるすべての私たちの対応が役割に分割され、上記生成されたディレクトリ内のハンドラ、文字脚本ファイルを作成する方法を詳しく見てマークされていることが分かりました。
まずは、VARS役割を書いてみましょう
[devops@server1 httpd]$ ls
defaults files handlers meta README.md tasks templates vars
[devops@server1 httpd]$ vim vars/main.yml
モジュールの内容に上記VARコンテンツ
同様、書き込み作業ロール
[devops@server1 httpd]$ ls
defaults files handlers meta README.md tasks templates vars
[devops@server1 httpd]$ vim tasks/main.yml
---
- name: install httpd
yum:
name: httpd
state: latest
- name: create index.html
copy:
content: "{{ ansible_facts['hostname'] }}\n"
dest: /var/www/html/index.html
tags: index
- name: configure httpd
template:
src: templates/httpd.conf
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: 644
notify: restart httpd
- name: start httpd
service:
name: httpd
state: started
enabled: true
- name: start firewalld
service:
name: firewalld
state: started
enabled: true
- name: configure firewalld
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
上記のような内容とタスクモジュール。
次に、ハンドラの役割を書きます
[devops@server1 httpd]$ ls
defaults files handlers meta README.md tasks templates vars
[devops@server1 httpd]$ vim handlers/main.yml
最後に、役割をテンプレート
[devops@server1 httpd]$ cd templates/
[devops@server1 templates]$ ls
httpd.conf
[devops@server1 templates]$ vim httpd.conf
このディレクトリには、メインの設定ファイルのhttpdサービスを入れて、設定されたポートが役割をvarsの{{}} HTTP_PORT、簡単にポートのテストを行うには、後で修正。
これは、複数のロールにYMLファイルを置いていますが、ホストが定義されていないことがわかります。
[devops@server1 ansible]$ vim apache.yml
---
- hosts: all ##定义主机
roles:
- httpd ##定义角色
私たちは、その上にYMLファイルを押した後、ホストの動作を定義し、一般的なYMLファイルansibleメインの設定ファイルに書き込まれるように、アップ実行HTTPDこの全体の大きな役割を作りたいです。
[devops@server1 ansible]$ ansible-playbook apache.yml
我々が作成のhttpdの役割は、対応する機能を実現することができるかどうかを確認するためのテストの成功を押してください
[devops@server1 ansible]$ vim roles/httpd/vars/main.yml
ポートを変更できるかどうかを確認するために、VARS役割を書きます。
[devops@server1 ansible]$ ansible-playbook apache.yml
プッシュ。
リモート・ホスト・ポートを表示し、正常に変更され、そのファイルが複数の役割に分かれて成功をYML。