章3-4〜3-5 Ansibleプレイブック共通モジュールの導入
- A、Ansibleプレイブック共通モジュールの紹介
- 1.1、ファイルモジュール
- 1.2、コピーモジュール
- 1.3、統計モジュール
- 1.4、デバッグ・モジュール
- 1.5、コマンド/シェルモジュール
- 1.6、テンプレートモジュール
- 1.7、パッケージモジュール
- 1.8、サービスモジュール
- 1.9、包括的なケース上記モジュール
- 二、Ansibleプレイブックケース発表
A、Ansibleプレイブック共通モジュールの紹介
1.1、ファイルモジュール
名前:タスクの名前名前
ファイル:タスクの種類を示して
のパスのファイル宛先ホストに表現生成:パス
状態=タッチ:タッチファイルを作成する必要表さ
モード:ファイル権限表す
所有者:文書がユーザー名に属していることを示し
グループ:ファイルがユーザーのグループ名に属することを示します
1.2、コピーモジュール
名前:名前は、タスクの名前を
コピー:この表現は、ファイルをコピーすることです
なし= remote_src:私たちは中でターゲットホストにマシンのファイルをコピーする必要がある手段
srcは:ソースファイルのパスを表し
DESTを:ターゲットへのファイルパスを示す
モードを:ファイルのアクセス権を示し
表明執行:力= YESを
1.3、統計モジュール
ファイルが存在するかどうかを確認してください
名:名前タスクの名前
STATは:通話がSTATモジュールであることを示している
レジスタ:指定したファイルを確認するために状態の前を通過するかどうかは、ここでは変数が存在します
1.4、デバッグ・モジュール
script_stat.stat.exists文が真であるとき、「foo.shが存在する」印刷します。
デバッグ:MSG:条件文の定義
:条件文を表明
1.5、コマンド/シェルモジュール
ファイルfoo.sh行う:の手段
後段手段:試験Test.txtファイルを印刷する(「>」リダイレクション記号の)
二つの文の間の差は、シェルが使用リダイレクト演算子とすることができるということです。
1.6、テンプレートモジュール
ここでは、以下の送信処理の主な関心は、ファイル内の変数は、テンプレートで定義されたパラメータに呼び出すことができます。
SRC:ソースファイルのアドレスを示す
DESTを:ターゲットホスト転送のアドレスを示しています
1.7、パッケージモジュール
次の文は、最新バージョンのインストールのnginxを示す
のインストールパッケージの名前を示します:PKGの
状態を:バージョン番号を表し
1.8、サービスモジュール
次の文は、nginxのサービスに示します
名前:指定するサービスの名称
状態:サービスの状態に到達するための必要性を表明
1.9、包括的なケース上記モジュール
二、Ansibleプレイブックケース発表
ホストへの準備ができてansible 2.1、
まず、デプロイユーザーansibleホストに切り替え、その後、次の2つのステートメントを使用して、仮想環境Python3.6でansible開始
下図、私が始めました。
2.2、すぐにtestbox
# 进入到testbox主机界面
# 创建两个系统用户
useradd foo
useradd deploy
# 创建一个nginx的文件目录
mkdir /etc/nginx
# 安装一个Nginx的yum源,防止playbook运行安装的时候出错
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装完后退出testbox
exit
2.3、ケースファイル - ファイル・モジュールを作成します
2.3.1、書かれたmain.ymlファイル
# 进入到test_playbooks文件夹
cd test_playbooks/
# 编辑main.yml文件
vim roles/testbox/tasks/main.yml
タスクを追加します
2.3.2テスト
# 测试上面编写的代码
ansible-playbook -i inventory/testenv ./deploy.yml
- name: create a file
file: 'path=/root/foo.txt state=touch mode=0755 owner=foo group=foo'
ヒント:
# 可以使用下面的代码去查看是否创建了该文件,如果创建会返回该文件的相关信息
ssh [email protected] ls -al /root/foo.txt
2.4、ファイルがモジュールケースをコピー - コピー
2.4.1環境準備
まず、/役割/ testboxフォルダ内のフォルダファイルを作成します
# 创建files文件夹
mkdir roles/testbox/files
# 创建并编写foo.sh文件
vim roles/testbox/files/foo.sh
2.4.2、書かれたmain.ymlファイル
# 编写main.yml文件
vim roles/testbox/tasks/main.yml
- name: copy a file
copy: 'remote_src=no src=roles/testbox/files/foo.sh dest=/root/foo.sh mode=0644 force=yes'
2.4.3、テストスクリプト
2.5、ケース-STAT、デバッグ・モジュール
2.5.1、書かれたmain.ymlファイル
- name: check if foo.sh is exists
stat: 'path=/root/foo.sh'
register: script_stat
- debug: msg="foo.sh exists"
when: script_stat.stat.exists
2.5.2テスト
2.6、ケース - コマンドモジュール
2.6.1、書かれたmain.ymlファイル
- name: run the script
command: 'sh /root/foo.sh'
2.6.2テスト
2.7、ケース-Templateモジュール
2.7.1、書かれたtestenvファイル
まず、私たちは、環境を準備testenvマニフェストファイル内のいくつかの設定項目を追加する必要が
役割/ testbox /ディレクトリの下にテンプレートディレクトリを作成します
# 创建文件夹
mkdir roles/testbox/templates
# 创建Nginx的模板文件
vim roles/testbox/templates/nginx.conf.j2
2.7.2、書かれnginx.conf.j2ファイル
# For more information on configuration, see:
user {{ user }};
worker_processes {{ worker_processes }};
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections {{ max_open_file }};
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
#include /etc/nginx/conf.d/*.conf;
server {
listen {{ port }} default_server;
server_name {{ server_name }};
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root {{ root }};
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
2.7.3、書かれたmain.ymlファイル
次のファイルは、すなわち、3つのタスクを追加しました:
- ターゲットサーバーテンプレートテンプレート方法1. nginxの設定ファイル
- サービスを確保するため2. nginxのの最新バージョンです
- 3. [スタート] nginxのサービス
- name: write the nginx config file
template: src=roles/testbox/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf
- name: ensure nginx is at the latest version
yum: pkg=nginx state=latest
- name: start nginx service
service: name=nginx state=started
2.7.4テスト
以下の変数で見ることができるスクリーンショットがtestenv上nginx.conf.j2変数の設定前に交換されていますから、次の文を使用して正常に実行した後、テンプレートを表示モジュールによって生成することができます。
ssh [email protected] cat /etc/nginx/nginx.conf
testboxホストnginxのサービスがオンになっているかどうかを確認します
ssh [email protected] ps -ef | grep nginx
あなたは上記の例の整合性を見ることができるので、共通のモジュールが正常に実装されています!!!