[ジェンキンス+ Ansible + Gitlab自動展開三銃士]の研究ノート - 第3章3-6〜3.7 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

ここに画像を挿入説明
あなたは上記の例の整合性を見ることができるので、共通のモジュールが正常に実装されています!

公開された76元の記事 ウォン称賛16 ビュー20000 +

おすすめ

転載: blog.csdn.net/weixin_38657051/article/details/100746864