Linuxの場合:統合アーキテクチャ一括管理サービス(ansible) - の下で

統合アーキテクチャ一括管理サービス--ansible

00冒頭部分

1)スクリプトを使用して、簡単な展開の完全なサービスワンクリックます
2)ホストリストの設定
3)拡張設定機能は、脚本
方法4)を統合するために複数のスクリプト
5)ディレクトリの役割を果たしています?

01.知識レビュー

1)すべてのモジュールを説明について説明してきました

command	模块: 	在远程主机上执行命令操作	默认模块
shell		模块:  	在远程主机上执行命令操作		万能模块
								PS: 有时剧本不能反复执行!!!
script	模块: 	批量执行本地脚本
copy		模块:		用于批量分发传输数据信息
fetch		模块:		用于将远程主机数据进行拉取到本地管理主机
file		模块: 	修改数据属性信息/创建数据信息
yum			模块:		用于安装和卸载软件包
service	模块:		用于管理服务的运行状态 
user		模块:		用于批量创建用户并设置密码信息
mount		模块:		用于批量挂载操作
cron		模块: 	批量部署定时任务信息
ping		模块:		远程管理测试模块
  			ansible 172.16.1.31 -m ping

2)ansibleサービススクリプト機能

スクリプトの一部:

スクリプトの構文仕様:

  1. 宇宙仕様:インデントを達成
  2. コロン仕様:定義されたキーを達成するために
  3. 水平線仕様:リスト表示を実現

02.サービスにキー展開-rsyncを完了するために、スクリプトを使用して:

rsyncのサービス展開
NFSサービス展開
sersyncサービスの展開

ネットワーク全体のバックアッププロジェクト-rsync

rsyncのスクリプトライティングサービス:

準備:

  1. ソフトウェアの展開プロセスに精通
  2. 身近ansibleソフトウェアモジュール
  3. 身近ansible脚本書かれた仕様
    ansible:
    バッチでアドホック一時的な管理機能(モジュール)---コマンド
    脚本恒久的に達成一括管理(脚本)---スクリプト
[root@m01 ansible-playbook]# cat rsync_server.yaml 
- hosts: rsync_server
  tasks:
- name: 01-install rsync  
  yum: name=rsync state=installed
- name: 02-push conf file
  copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
- name: 03-create user
  user: name=rsync create_home=no shell=/sbin/nologin
  #shell: useradd rsync -M -s /sbin/nologin --shell在剧本中不能反复执行,rsync用户存在时会报错
- name: 04-create backup dir
  file: path=/backup state=directory owner=rsync group=rsync
- name: 05-create password file
  copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
- name: 06-start rsync server
  service: name=rsyncd state=started enabled=yes

- hosts: rsync_clients
  tasks:
- name: 01-install rsync
  yum: name=rsync state=installed
- name: 02-create password file
  copy: content=oldboy123 dest=/etc/rsync.password mode=600
- name: 03-create test file
  file: dest=/tmp/test.txt  state=touch
- name: 04-check test
  shell: rsync -avz /tmp/test.txt [email protected]::backup --password-file=/etc/rsync.password

よくある間違いを書く脚本:

スクリプト構文仕様準拠(スペース結腸ダッシュ)
スクリプトモジュールは、正しい使用
のみモジュールのタスク書くことができ、以下の情報を識別するために、スクリプトに名前を
シェルモジュールの大規模な番号を使用しないようにしよう、スクリプトを

03.ホストリストを設定する方法

公式のアドレスのホスト構成リスト:
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

説明:の/ etc / ansible / hostsファイルの[]表現は[组名]、簡単のバッチラベルホストのIPアドレスを使用するには
、初期設定のみのホストのIPアドレスを

cat /etc/ansible/hosts
172.16.1.31
172.16.1.41
172.16.1.7

呼び出し:

ansible all -a "hostname"
或者
ansible 172.16.1.31,172.16.1.41 -a "hostname"

第一の実施形態:構成のホスト情報パケット

cat /etc/ansible/hosts
[web]
172.16.1.7
172.16.1.8
172.16.1.9

[data]
172.16.1.31
172.16.1.41

動作中

[root@m01 ansible-playbook]# ansible data -a "hostname"
172.16.1.31 | CHANGED | rc=0 >>
nfs01

172.16.1.41 | CHANGED | rc=0 >>
backup

[root@m01 ansible-playbook]# ansible web -a "hostname"
172.16.1.7 | CHANGED | rc=0 >>
web01

第二の方法:ホスト名、シンボルマッチングの設定

[web]
172.16.1.[7:9]   ---表示7-9共3台主机
[web]
web[01:03]       ---表示1-3共3台主机,但前提条件是/etc/hosts中已经配置好地址解析

第三の方法:非標準のリモートポートを維持します

[web]
web01:52113 或
172.16.1.7:52113
操作命令:ansible web01 -a "hostname"

4番目の方法:特殊変数を持つホスト

このような構成は、SSH公開鍵を使用するために事前に配布することができません

[web]   ---方法一
172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
[web]   ---方法二
web01 ansible_ssh_host=172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456

フィフス方法:ホストグループ名埋め込まれたプロファイル

[rsync:children]--- 嵌入子组信息,rsync包含rsync_server组合rsync_client组,需要使用参数children
rsync_server
rsync_client

[rsync_server]
172.16.1.41

[rsync_client]
172.16.1.31
172.16.1.7

ホストを構成するには、以下の組み込み変数の道、あなたが理解できるこの方法は、残りの部分は、フォローアップしますと

[web:vars] --- 嵌入式变量信息
ansible_ssh_host=172.16.1.7
ansible_ssh_port=52113
ansible_ssh_user=root
ansible_ssh_pass=123456
[web]
web01

### 组web中web01主机会调用web:vars的变量值,功能同上述第四种方式方法二

04.コンフィギュレーション・スクリプトの拡張

脚本/etc/ansible/ansible_playbook/rsync_server.yaml最適化のための変数の情報を行い
、CP rsync_server.yaml rsync_server_varinfo.yaml

。スクリプト内の変数情報を設定します

方法1:スクリプトファイルに直接書き込みます

varsは:
oldboy01:DATA01
oldboy02:DATA02

変数の参照ことに注意してください:使用を {{ 变量 }}

どのように使用するには:

[root@m01 ansible-playbook]# cat rsync_server_varinfo.yaml 
- hosts: rsync_server
  vars: 
    backupdir: /data
    passfile: rsync-password
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
      #shell: useradd rsync -M -s /sbin/nologin
    - name: 04-create backup dir
      file: path={{ backupdir }} state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:oldboy123 dest=/etc/{{ passfile }} mode=600
    - name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes

- hosts: rsync_clients
  vars: 
    passfile: rsync-password
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create password file
      copy: content=oldboy123 dest=/etc/{{ passfile }} owner=root group=root mode=600
    - name: 04-start rsyncd server,set enabled.
      service: name=rsyncd state=started enabled=yes
    - name: 05-create test file
      file: dest=/tmp/test.txt state=touch
    - name: 06-check test data backup
      shell: rsync -avz /tmp/test.txt [email protected]::data --password-file=/etc/{{ passfile }}

第二の方法:コマンドラインで指定

ansible-playbook --extra-vars=oldboy01=data01
使用方法:可将上述变量定义部分注释掉,但剩下变量引用,这时引用的变量为临时变量,需要从命令行获取值
参数 --extra-vars 可用短格式 -e
[root@m01 ansible-playbook]# cat rsync_server_varinfo.yaml 
- hosts: rsync_server
 #vars: 
 #   backupdir: /data
 #   passfile: rsync-password
  tasks:
 ...
 - hosts: rsync_clients
 # vars: 
 #   passfile: rsync-password
  tasks:
  ...
命令执行前可先删除对应目录和密码文件再进行测试
[root@m01 ansible-playbook]# ansible-playbook --extra-var backupdir=/data -e passfile=/etc/rsync-password

三つの方法:ホストリストファイルへの書き込み

【oldboy]
oldboy01 = DATA01
oldboy02 = DATA02

## 配置信息vars部分
[root@m01 ansible-playbook]# cat /etc/ansible/hosts
[rsync:children]
rsync_server
rsync_clients

[rsync_server]
172.16.1.41
[rsync_server:vars]
backupdir=/data
passfile=rsync-password

[rsync_clients]
172.16.1.7
172.16.1.31
[rsync_clients:vars]
passfile=rsync-password

##执行
[root@m01 ansible-playbook]# ansible-playbook rsync_server_varinfo.yaml 

問題への注意あなたは3通りの方法で設定している場合は、効果的な3つの方法:優先順位は以下のとおりです。
最高の優先度:コマンドライン変数の設定(めったに使われない)
二次の優先順位:スクリプト変数の設定(ほとんど使用)
最終:ホスト変数の設定一覧(多目的回)

これは3つの方法の優先順位で試験した異なる変数で設定することができます

##剧本中:
backupdir=/data01
passfile=/rsync-password01
##主机清单文件中:
backupdir=/data03
passfile=/rsync-password03

##命令行执行:--检测出/data02文件夹生成,命令行设置最优先
[root@m01 ansible-playbook]#ansible-playbook --extra-var backupdir=/data02 -e passfile=/etc/rsync-password02 rsync_server_varinfo.yaml 

##命令行执行:--检测出/data01文件夹生成,剧本中变量设置次优先
[root@m01 ansible-playbook]#ansible-playbook  rsync_server_varinfo.yaml 

##注释掉剧本中变量设置后,命令行执行:--检测出/data03文件夹生成,主机清单中变量设置最后
[root@m01 ansible-playbook]#ansible-playbook  rsync_server_varinfo.yaml 

その他のリフレクション:どのように設定するには、グローバル変数(役割では、プレゼンテーションの不可欠な部分を担っています)

B。スクリプト内の登録情報を設定します

説明:変数の定義として登録情報機能を、コール変数
などのポートを見ることで、rsyncのサービスがインストールされているかどうかをチェックするように、しかしansibleシェルプロンプトモジュールのみOK、特定のポートの情報は表示されません、あなたが使用することができます登録機能、表示情報スクリプトの実行
を使用します:

cd /etc/ansible/ansible-playbook/
cp rsync_server.yaml rsync_server_reginfo.yaml
cat rsync_server_reginfo.yaml
- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
      #shell: useradd rsync -M -s /sbin/nologin
    - name: 04-create backup dir
      file: path=/backup state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes
## 以下部分为register info
    - name: 07-check server port info
      shell: netstat -lntup|grep 873        ---端口信息
      register: get_server_port             ---定义保存端口信息的变量
    - name display port name
      debug: msg={{ get_server_port.stdout_lines }}   ---debug调用变量输出信息,stdout_lines是标准输出格式显示的作用

## 执行结果
[root@m01 ansible-playbook]# ansible-playbook rsync_server_reginfo.yaml 
...
TASK [07-check server port info] ****************************************************************************************
changed: [172.16.1.41]

TASK [display port name] ************************************************************************************************
ok: [172.16.1.41] => {
    "msg": [
        "tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      936/rsync           ", 
        "tcp6       0      0 :::873                  :::*                    LISTEN      936/rsync           "
    ]
}

C。スクリプト内で設定された判定情報

どのように条件を指定するには決定されます
(ansible_hostname ==「NFS」)
管理対象ホストシステムのセットアップディスプレイモジュールの詳細

内蔵の取得変数方法:

ansible rsync_server -m setup -a "filter=ansible_hostname"   -- ansible_hostname变量由setup模块提供
常见主机信息:
ansible_all_ipv4_addresses 			--显示ipv4信息
ansible_devices									--仅显示磁盘信息
ansible_distribution						--显示是什么系统,例如:centos,suse等
ansible_distribution_major_version --显示系统主版本
ansible_distribution_version		--显示系统版本
ansible_machine									--显示系统类型,32位,64位
ansible_eth0										--仅显示eth0的信息
ansible_hostname								--显示主机名
ansible_kernel									--显示内核版本
ansible_lvm											--显示lvm相关信息
ansible_memtotal_mb							--显示系统总内存
ansible_memfree_mb							--显示系统可用内存
ansible_swaptotal_mb						--显示总的swap内存
ansible_swapfree_mb							--显示swap内存的可用内存
ansible_mounts									--显示磁盘系统挂在情况
ansible_processor								--显示CPU的个数(具体显示每个CPU的型号)
ansible_vcpus	p	p								--显示总哦的CPU个数(只显示个数)

子供の方法についての情報を入手:eth0のみIPv4の情報で取得するが、唯一有効になりませんコマンドラインで、スクリプトの中で役割を果たして
ansible rsync_serverセットアップを-a -m「フィルタ= ansible_eth0 [IPv4の]
を使用します:

[root@m01 ansible-playbook]# cp rsync_server.yaml rsync_server_when.yaml 
[root@m01 ansible-playbook]# cat rsync_server_when.yaml 
- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
      #shell: useradd rsync -M -s /sbin/nologin
    - name: 04-create backup dir
      file: path=/backup state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes

- hosts: rsync_clients
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create password file
      copy: content=oldboy123 dest=/etc/rsync.password owner=root group=root mode=600
    - name: 04-start rsyncd server,set enabled.
      service: name=rsyncd state=started enabled=yes
    - name: 05-create test_nfs file
      file: dest=/tmp/test_nfs.txt state=touch
      when: (ansible_hostname == "nfs01")				##上一行执行的判断条件,ansible_hostname由setup模块提供
    - name: 05-create test_web file
      file: dest=/tmp/test_web.txt state=touch
      when: (ansible_hostname == "web01")				##上一行执行的判断条件
    - name: 06-check test nfs data backup
      shell: rsync -avz /tmp/test_nfs.txt [email protected]::backup --password-file=/etc/rsync.password
      when: (ansible_hostname == "nfs01")				##上一行执行的判断条件
    - name: 07-check test web data backup
      shell: rsync -avz /tmp/test_web.txt [email protected]::web --password-file=/etc/rsync.password
      when: (ansible_hostname == "web01")				##上一行执行的判断条件
## 注意在/etc/ansible/server_file/rsync_server/rsyncd.conf中增加web模块,并在41上增加对应目录,修改数组为chown rsync.rsync /web
[root@m01 ansible-playbook]# ansible-playbook rsync_server_when.yaml 

D。スクリプトで設定ループ情報

周期関数:YAMLファイルは、複合サイクル使用して、同じモジュールを有する
CDの/ etc / ansible / ansible-ハンドブック/ && CP rsync_server.yaml rsync_server_loop.yaml
モジュール定義された変数、with_itemsを使用してコール割り当てを

#循环结束 BEGIN
- name: 02-push conf file && password file
copy: src=/etc/ansible/server_file/rsync_server/{{ item.src }} dest={{ item.dest }} mode={{ item.mode }}  ##定义copy模块变量src,dest,mode
with_items:		##变量赋值并引用
  - { src: 'rsyncd.conf', dest: '/etc/', mode: '644' }
  - { src: 'rsync.password', dest: '/etc/', mode: '600' }
# 循环结束 END

どのように使用するには:

[root@m01 ansible-playbook]# cat rsync_server_loop.yaml 
- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    # 循环开始BEGIN  
    # 同一个name中有多个不同模块时直接报错,相同模块时会出现警告,只执行最后一个模块,此时使用循环功能
    #- name: 02-push conf file && password file
    #  copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    #  copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    #  将上述copy内容修改为格式大致相同
    #  copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf    dest=/etc/ mode=644
    #  copy: src=/etc/ansible/server_file/rsync_server/rsync.password dest=/etc/ mode=600
    - name: 02-push conf file && password file
      copy: src=/etc/ansible/server_file/rsync_server/{{ item.src }} dest={{ item.dest }} mode={{ item.mode }}  ##定义copy模块变量src,dest,mode
      with_items:		##变量赋值并引用
        - { src: 'rsyncd.conf', dest: '/etc/', mode: '644' }
        - { src: 'rsync.password', dest: '/etc/', mode: '600' }
    # 循环结束 END
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
      #shell: useradd rsync -M -s /sbin/nologin
    - name: 04-create backup dir
      file: path=/backup state=directory owner=rsync group=rsync
    #copy 模块放到上面的copy模块部分
    #- name: 05-create password file
    #  copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes

- hosts: rsync_client
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
    - name: 03-create password file
      copy: content=oldboy123 dest=/etc/rsync.password owner=root group=root mode=600
    - name: 04-start rsyncd server,set enabled.
      service: name=rsyncd state=started enabled=yes
    - name: 05-create test file
      file: dest=/tmp/test.txt state=touch
    - name: 06-check test data backup
      shell: rsync -avz /tmp/test.txt [email protected]::backup --password-file=/etc/rsync.password
[root@m01 ansible-playbook]# ansible-playbook rsync_server_loop.yaml
...

ansible形式の書き込み:

- name: install software
  yum: name=wget state=installed

saltstack形式の書き込み:

- name: install software
  yum:
    name: ['rsync','tree','wget']
    state: installed

すなわち、スクリプトでエラーを無視するように設定

特長:

エラーは、前のセクションで発生した場合に、スクリプトでは、スクリプトがダウン実行されません
あなたが次の実行を継続したい場合は、あなたが使用することができ、現在のエラーを無視する、设置错误忽略機能を
するために添加することができるignore_errors: yesエラーを無視します

どのように使用するには:

- hosts: all
  remote_user: root
  tasks:
    - name: Ignore False
      command: /bin/false
      ignore_errors: yes
    - name: touch nowfile
      file: path=/tmp/moox_ignore state=touch

スクリプトで提供F。タグ情報

特長:

モジュールは、缶にスクリプトでは、単にモジュール、ブロックを実行した場合や、一定の時間をスキップ设置标签
するために添加されtags: tag1、モジュールの指定
実行時パラメータを-t、または--tags=tag1タグを指定し、
どのタグタスクの実行を指定する:ansible-ハンドブック--tags = TAG1 test_tags.yamlは、
タスクタグを指定したスキップ:ansible-脚本--skip-タグ= TAG1 test_tags.yaml

どのように使用するには:

- hosts: all
  remote_user: root
  tasks:
    - name: Ignore False
      command: /bin/false
      tags: tag1
    - name: touch nowfile
      file: path=/tmp/moox_ignore state=touch

グラム。トリガ情報を設定するためのスクリプトで

時間。スクリプトに統合するためのスクリプトを設定します

05.知識の概要

  1. rsyncのサービスキー展開スクリプト
  2. ホストインベントリ書き込み方法
    5つの方法
  3. 拡張脚本の書き込み方法
    変数情報の3種類を設定する方法
    についてどのようにセットデバッグレジスタ情報を
    どのように設定された判定セットアップ情報への

求人:

  1. ネットワーク全体のバックアッププロジェクトのワンクリックの展開

  2. ワンクリックで展開NFSサービス

  3. リアルタイムの同期サービスのワンクリックで展開

おすすめ

転載: www.cnblogs.com/moox/p/12649976.html