Ansible構成管理システム
12396 ワード
Ansibleは構成管理システムconfiguration Management systemであり、sshを使用してサーバまたはデバイスにアクセスするだけでよい.1.ソフトウェアのインストール2.サービスの構成
第1章Ansibleで何ができるか
ansibleは、一括タスクを完了したり、頻繁に繰り返される作業を完了したりするのに役立ちます.たとえば、nfsサービスを100台のサーバに同時にインストールし、インストール後にサービスを開始します.たとえば、あるファイルを100台のサーバに一度にコピーします.たとえば、新しいサーバが作業環境に参加するたびに、新しいサーバにサービスを導入します.つまり、同じ作業を頻繁に繰り返す必要があります.これらのシーンではansibleを使用できます.
1.1 Ansibleソフトウェアの特徴
1.ansibleは単独でクライアントをインストールする必要はなく、SSHはansibleクライアントに相当する.2.ansibleはサービスを起動する必要はなく、対応するツールをインストールするだけでよい.3.ansibleは大量のpythonモジュールに依存して一括管理を実現する.4.ansibleプロファイル/etc/ansible/ansible.cfg
1.2管理機m 01から他の機器への鍵認証の実現
ansible公開鍵による一括管理
1.2.1非交換ツールによる公開鍵の一括配布と一括管理サーバの実現
1.3構成手順
1.3.1 ansibleの取り付け
1.3.2一括実行コマンド
対応するホストに公開鍵が発行されていない場合は、パスワードで172.16.1.41 ansible_を追加できます.ssh_user=’root’ ansible_ssh_pass=’1′ ansible_ssh_port=’22’
1.4ホスト構成表の定義
1、コマンド->ファイル=スクリプト2、モジュール->ファイル=シナリオ
モジュール
さぎょう
command
コマンドの実行
shell
コマンドの実行(パイプシンボルのサポート)
yum
ソフトウェアモジュールのインストール
copy
モジュールの構成
service
サービスモジュールの起動
user
ユーザー管理
file
ディレクトリの作成、ファイルの作成、ファイルへの内容の書き込み
cron
タイミングタスク
mount
マウント
commandコマンドモジュール
-f=forks/etc/ansible/ansible.cfg#結果が返す数
yum取付モジュール
copyモジュール
copyモジュールの主なパラメータ
src-データをプッシュするソースファイル情報dest-データをプッシュするターゲットパスbackup-送信されたファイルをバックアップcontent-管理されたエンドファイルに直接一括してコンテンツgroupを追加-ローカルファイルをリモートにプッシュし、ファイルグループ情報ownerを指定-ローカルファイルをリモートにプッシュし、ファイルがプライマリ情報modeを指定-ローカルファイルはリモートにプッシュされ、ファイル権限情報forceを指定します.force=noまたはyesに分けられます.ターゲットホストにファイルが含まれていますが、内容が異なり、yesに設定されている場合は強制的に上書きされます.noの場合、ターゲットホストのターゲット位置にファイルが存在しない場合にのみコピーされます.デフォルトはyesです.
サービスモジュール
しゅパラメータ
name-サービスを開始する名前stateを定義-サービスステータスが停止またはstartedの実行-stoppedの起動-restartedの停止-reloadedの再起動-enabledの再ロード-サービスを開始するかどうかを指定します.
scriptモジュール
スクリプトの作成[root@m01 ~]# mkdir -p/server/scripts [root@m01 ~]# cat/server/scripts/yum.sh
!/usr/bin/bash
yum install -y iftop
モジュールをローカルで実行することは、リモートで実行することと同じであり、スクリプトファイルをターゲットホストにプッシュする必要はありません[root@m01 ~]# ansible oldboy -m script -a “/server/scripts/yum.sh”
file構成モジュール
ディレクトリを作成[root@m01~]#ansible oldboy-m file-a"path=/tmp/oldboy state=diretory"作成ファイル[root@m01 ~]# ansible oldboy -m file -a “path=/tmp/tt state=touch mode=555 owner=root group=root” [root@m01 ~]# ansible oldboy -m file -a “src=/tmp/tt path=/tmp/tt_link state=link”path-リモートホストディレクトリまたはファイル情報recurseの指定-再帰的認可state-directory-リモートでディレクトリtouchを作成-リモートでファイルlinkを作成-linkまたはhardでリンクファイルabsentの作成-ファイルまたはディレクトリmodeの削除-ファイルまたはディレクトリ権限ownerの設定-ファイルまたはディレクトリ所有者情報groupの設定-ファイルまたはディレクトリグループ情報
グループモジュール
name-作成したグループ名gidを指定-グループのgid state absentを指定-リモートホストのグループpresentを削除-リモートホストのグループを作成(デフォルト)
グループを作成しgidを指定[root@m01 ~]# ansible oldboy -m group -a “name=oldgirl gid=888”
userモジュール
uid-ユーザーのuidグループを指定-ユーザーグループ名groupsを指定-追加グループ名passwordを指定-ユーザーにパスワードshellを追加-ユーザーログインshell create_homeを指定-ホームディレクトリを作成するかどうか
oldgirlを作成し、uidを888に設定し、gidを888に追加します[root@m01~]#ansible oldboy-m user-a"name=oldgirl uid=888 group=888 shell=/sbin/nologin create_home=no"ランダムに暗号化文字列を生成(-1 MD 5を用いて暗号化-stdin非インタラクティブ-salt暗号化パラメータ)[root@m01~]#echo"bgx"|openssl passwd-1-stdin固定暗号化文字列[root@m01 ~]# echo “123”| openssl passwd -1 -stdin -salt ‘salt
一般ユーザを作成し、対応するユーザパスワードを設定[root@m01 ~]# echo “bgx” | openssl passwd -1 -stdin 1KmeCnsK1diDKPRoCIPMU6KEVEaPTZ0″‘
crondモジュール
crondサービスを正常に使用[root@m01 ~]# crontab -l /bin/sh/server/scripts/yum.sh
ansibleを使用してタイミングタスクを追加[root@m01 ~]# ansible oldboy -m cron -a “minute=* hour=* day=* month=* weekday=* job=’/bin/sh/server/scripts/test.sh'” [root@m01 ~]# ansible oldboy -m cron -a “job=’/bin/sh/server/scripts/test.sh'”
タイミングタスクコメント情報の設定、重複防止、name設定[root@m01 ~]# ansible oldboy -m cron -a “name=’cron01′ job=’/bin/sh/server/scripts/test.sh'”
適切なタイミングタスクを削除[root@m01 ~]# ansible oldboy -m cron -a “name=’ansible cron02′ minute=0 hour=0 job=’/bin/sh/server/scripts/test.sh’ state=absent”
適切なタイミングタスクを注釈し、タイミングタスクを失効させる[root@m01 scripts]# ansible oldboy -m cron -a “name=’ansible cron01′ minute=0 hour=0 job=’/bin/sh/server/scripts/test.sh’ disabled=yes”
mountモジュール
present-起動マウント、マウント構成のみを/etc/fstab mounted-マウントデバイスに書き込み、構成を/etc/fstab unmounted-マウントデバイスに書き込み、/etc/fstab書き込みの構成absent-マウントデバイスを消去せず、/etc/fstab書き込みの構成をクリーンアップ
マウントの構成のみ/etc/fstabに書き込み、マウント操作は実行されません
デバイスを一時的にマウントし、/etc/fstabにマウント情報を書き込む
一時的にアンインストールしても/etc/fstabはクリーンアップされません
[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=unmounted”
アンインストール、一時的なアンインストールだけでなく、/etc/fstabもクリーンアップ
[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=absent”
1.マシンリストアスナップショット(firewalld、selinux、倉庫の配置)
VMの選択-スナップショット-リカバリ
2.あなたの公開鍵をプッシュ
[root@m01 ~]# sshpass -p1 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
3.Ansibleのホストリストの構成
[root@m01 ~]# cat/etc/ansible/hosts [web] 172.16.1.7 172.16.1.8 [nfs] 172.16.1.31 [backup] 172.16.1.41
ホストがOKかどうかを確認
[root@m01 ~]# ansible all -m ping epel、firewalld、selinux、ww
1.基礎環境:
1.すべてのホストはrsyncとnfs-utilsをインストールする必要がある2.すべてのホストは対応するrsyncクライアントのパスワードファイル/etc/rsync.passを用意する必要がある3.すべてのホストはuidとgidが666のwwwユーザーを作成する必要がある4.すべてのホストは全ネットワークバックアップのスクリプトを必要とし、タイミングタスクを構成する必要がある
1.rsyncとnfs-utilsのインストール
[root@m01 ~]# ansible all -m yum -a “name=rsync,nfs-utils state=installed”
2.rsyncのクライアントパスワードファイルの準備
[root@m01 ~]# ansible all -m copy -a “content=’1′ dest=/etc/rsync.pass owner=root group=root mode=600”
3.対応するwwwユーザーを準備し、uidとgidは666
[root@m01 ~]# ansible all -m group -a “name=www gid=666” [root@m01 ~]# ansible all -m user -a “name=www uid=666 group=666 create_home=no shell=/sbin/nologin”
4.対応するスクリプト・ファイルを管理からコピーし、タイミング・タスクに追加
[root@m01 ~]# ansible all -m copy -a “src=./scripts/rsync_backup_md5.sh dest=/server/scripts/mode=755” [root@m01 ~]# ansible all -m cron -a “name=’Rsync Bakcup Scripts’ hour=01 minute=00 job=’/bin/bash/server/scripts/rsync_backup_md5.sh &>/dev/null'” [root@m01 ~]# pwd/root [root@m01 ~]# mkdir scripts [root@m01 ~]# cat scripts/rsync_backup_md5.sh
2.アプリケーション環境:(rsyncサービスの構成->Backupサーバ)
1.rsyncのインストール2.rsyncの構成、/etc/rsyncd.conf 3.ディレクトリの作成、仮想ユーザーファイルの作成、権限の変更4.サービスの開始、電源投入自起動5.メールボックスの構成、対応するスクリプトの準備
1.rsyncのインストール
2.rsync,/etc/rsyncd.confの構成
3.ディレクトリの作成、権限の変更、仮想ユーザーファイルの作成
4.サービスを起動し、起動してから起動する
5.メールボックスの構成、対応するスクリプトの準備3.アプリケーション環境:(nfsサービスの構成)
1.nfs-utilsをインストールする2.nfs-utilsを構成する3.対応する共有ディレクトリを作成し、権限を変更する4.nfsを起動する
1.nfs-utilsのインストール
2.nfs-utilsの構成
3.対応する共有ディレクトリを作成し、権限を再帰的に変更する
4.nfsを起動する
4.アプリケーション環境:(ウェブサービスの構成、マウント操作)
検証:
1.nfsストレージが使用可能かどうかを検証する2.rsyncが3.backupサーバのプッシュを完了できるかどうかを検証する4.リアルタイム同期
第1章Ansibleで何ができるか
ansibleは、一括タスクを完了したり、頻繁に繰り返される作業を完了したりするのに役立ちます.たとえば、nfsサービスを100台のサーバに同時にインストールし、インストール後にサービスを開始します.たとえば、あるファイルを100台のサーバに一度にコピーします.たとえば、新しいサーバが作業環境に参加するたびに、新しいサーバにサービスを導入します.つまり、同じ作業を頻繁に繰り返す必要があります.これらのシーンではansibleを使用できます.
1.1 Ansibleソフトウェアの特徴
1.ansibleは単独でクライアントをインストールする必要はなく、SSHはansibleクライアントに相当する.2.ansibleはサービスを起動する必要はなく、対応するツールをインストールするだけでよい.3.ansibleは大量のpythonモジュールに依存して一括管理を実現する.4.ansibleプロファイル/etc/ansible/ansible.cfg
1.2管理機m 01から他の機器への鍵認証の実現
ansible公開鍵による一括管理
1.2.1非交換ツールによる公開鍵の一括配布と一括管理サーバの実現
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
1.3構成手順
1.3.1 ansibleの取り付け
[root@m01 ~]# yum install ansible -y
2. ansible
[root@m01 ~]# vim /etc/ansible/hosts
[oldboy]
172.16.1.31
172.16.1.41
3. ansible
ansible ssh
[root@m01 ~]# ansible oldboy -m ping
172.16.1.7 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.16.1.31 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.16.1.41 | SUCCESS => {
"changed": false,
"ping": "pong"
}
1.3.2一括実行コマンド
[root@m01 ~]# ansible oldboy -m command -a "df -h"
対応するホストに公開鍵が発行されていない場合は、パスワードで172.16.1.41 ansible_を追加できます.ssh_user=’root’ ansible_ssh_pass=’1′ ansible_ssh_port=’22’
1.4ホスト構成表の定義
[web]
172.16.1.7
[nfs]
172.16.1.31
[backup]
172.16.1.41
[oldboy:children]
web
nfs
backup
[root@m01 ~]# ansible web --list-hosts #web
hosts (1):
172.16.1.7
[root@m01 ~]# ansible nfs --list-hosts #nfs
hosts (1):
172.16.1.31
[root@m01 ~]# ansible backup --list-hosts #rsync
hosts (1):
172.16.1.41
[root@m01 ~]# ansible oldboy --list-hosts # ,
hosts (3):
172.16.1.31
172.16.1.41
172.16.1.7
1、コマンド->ファイル=スクリプト2、モジュール->ファイル=シナリオ
モジュール
さぎょう
command
コマンドの実行
shell
コマンドの実行(パイプシンボルのサポート)
yum
ソフトウェアモジュールのインストール
copy
モジュールの構成
service
サービスモジュールの起動
user
ユーザー管理
file
ディレクトリの作成、ファイルの作成、ファイルへの内容の書き込み
cron
タイミングタスク
mount
マウント
commandコマンドモジュール
,
[root@m01 ~]# ansible oldboy -a "hostname"
, shell
[root@m01 ~]# ansible oldboy -m shell -a "ifconfig|grep eth0" -f 50
-f=forks/etc/ansible/ansible.cfg#結果が返す数
yum取付モジュール
,
[root@m01 ~]# ansible oldboy -m yum -a "name=httpd state=installed"
name ---
state --- yum
installed,present ---
removed,absent ---
latest ---
copyモジュール
[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt owner=www group=www mode=0600"
, ,
[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"
,
[root@m01 ~]# ansible oldboy -m copy -a "content='bgx' dest=/tmp/oldboy"
copyモジュールの主なパラメータ
src-データをプッシュするソースファイル情報dest-データをプッシュするターゲットパスbackup-送信されたファイルをバックアップcontent-管理されたエンドファイルに直接一括してコンテンツgroupを追加-ローカルファイルをリモートにプッシュし、ファイルグループ情報ownerを指定-ローカルファイルをリモートにプッシュし、ファイルがプライマリ情報modeを指定-ローカルファイルはリモートにプッシュされ、ファイル権限情報forceを指定します.force=noまたはyesに分けられます.ターゲットホストにファイルが含まれていますが、内容が異なり、yesに設定されている場合は強制的に上書きされます.noの場合、ターゲットホストのターゲット位置にファイルが存在しない場合にのみコピーされます.デフォルトはyesです.
サービスモジュール
[root@m01 ~]# ansible oldboy -m service -a "name=crond state=stopped enabled=yes"
しゅパラメータ
name-サービスを開始する名前stateを定義-サービスステータスが停止またはstartedの実行-stoppedの起動-restartedの停止-reloadedの再起動-enabledの再ロード-サービスを開始するかどうかを指定します.
1.
[root@m01 ~]# ansible web -m yum -a "name=httpd state=installed"
2.
[root@m01 ~]# ansible web -m copy -a "content='This is Ansible' dest=/var/www/html/index.html"
3.
[root@m01 ~]# ansible web -m service -a "name=httpd state=started"
scriptモジュール
スクリプトの作成[root@m01 ~]# mkdir -p/server/scripts [root@m01 ~]# cat/server/scripts/yum.sh
!/usr/bin/bash
yum install -y iftop
モジュールをローカルで実行することは、リモートで実行することと同じであり、スクリプトファイルをターゲットホストにプッシュする必要はありません[root@m01 ~]# ansible oldboy -m script -a “/server/scripts/yum.sh”
file構成モジュール
ディレクトリを作成[root@m01~]#ansible oldboy-m file-a"path=/tmp/oldboy state=diretory"作成ファイル[root@m01 ~]# ansible oldboy -m file -a “path=/tmp/tt state=touch mode=555 owner=root group=root” [root@m01 ~]# ansible oldboy -m file -a “src=/tmp/tt path=/tmp/tt_link state=link”path-リモートホストディレクトリまたはファイル情報recurseの指定-再帰的認可state-directory-リモートでディレクトリtouchを作成-リモートでファイルlinkを作成-linkまたはhardでリンクファイルabsentの作成-ファイルまたはディレクトリmodeの削除-ファイルまたはディレクトリ権限ownerの設定-ファイルまたはディレクトリ所有者情報groupの設定-ファイルまたはディレクトリグループ情報
グループモジュール
name-作成したグループ名gidを指定-グループのgid state absentを指定-リモートホストのグループpresentを削除-リモートホストのグループを作成(デフォルト)
グループを作成しgidを指定[root@m01 ~]# ansible oldboy -m group -a “name=oldgirl gid=888”
userモジュール
uid-ユーザーのuidグループを指定-ユーザーグループ名groupsを指定-追加グループ名passwordを指定-ユーザーにパスワードshellを追加-ユーザーログインshell create_homeを指定-ホームディレクトリを作成するかどうか
oldgirlを作成し、uidを888に設定し、gidを888に追加します[root@m01~]#ansible oldboy-m user-a"name=oldgirl uid=888 group=888 shell=/sbin/nologin create_home=no"ランダムに暗号化文字列を生成(-1 MD 5を用いて暗号化-stdin非インタラクティブ-salt暗号化パラメータ)[root@m01~]#echo"bgx"|openssl passwd-1-stdin固定暗号化文字列[root@m01 ~]# echo “123”| openssl passwd -1 -stdin -salt ‘salt
一般ユーザを作成し、対応するユーザパスワードを設定[root@m01 ~]# echo “bgx” | openssl passwd -1 -stdin 1KmeCnsK1diDKPRoCIPMU6KEVEaPTZ0″‘
crondモジュール
crondサービスを正常に使用[root@m01 ~]# crontab -l
ansibleを使用してタイミングタスクを追加[root@m01 ~]# ansible oldboy -m cron -a “minute=* hour=* day=* month=* weekday=* job=’/bin/sh/server/scripts/test.sh'” [root@m01 ~]# ansible oldboy -m cron -a “job=’/bin/sh/server/scripts/test.sh'”
タイミングタスクコメント情報の設定、重複防止、name設定[root@m01 ~]# ansible oldboy -m cron -a “name=’cron01′ job=’/bin/sh/server/scripts/test.sh'”
適切なタイミングタスクを削除[root@m01 ~]# ansible oldboy -m cron -a “name=’ansible cron02′ minute=0 hour=0 job=’/bin/sh/server/scripts/test.sh’ state=absent”
適切なタイミングタスクを注釈し、タイミングタスクを失効させる[root@m01 scripts]# ansible oldboy -m cron -a “name=’ansible cron01′ minute=0 hour=0 job=’/bin/sh/server/scripts/test.sh’ disabled=yes”
mountモジュール
present-起動マウント、マウント構成のみを/etc/fstab mounted-マウントデバイスに書き込み、構成を/etc/fstab unmounted-マウントデバイスに書き込み、/etc/fstab書き込みの構成absent-マウントデバイスを消去せず、/etc/fstab書き込みの構成をクリーンアップ
マウントの構成のみ/etc/fstabに書き込み、マウント操作は実行されません
[root@m01 ~]# ansible oldboy -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=present"
デバイスを一時的にマウントし、/etc/fstabにマウント情報を書き込む
[root@m01 ~]# ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"
一時的にアンインストールしても/etc/fstabはクリーンアップされません
[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=unmounted”
アンインストール、一時的なアンインストールだけでなく、/etc/fstabもクリーンアップ
[root@m01 ~]# ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=absent”
1.マシンリストアスナップショット(firewalld、selinux、倉庫の配置)
VMの選択-スナップショット-リカバリ
2.あなたの公開鍵をプッシュ
[root@m01 ~]# sshpass -p1 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
3.Ansibleのホストリストの構成
[root@m01 ~]# cat/etc/ansible/hosts [web] 172.16.1.7 172.16.1.8 [nfs] 172.16.1.31 [backup] 172.16.1.41
ホストがOKかどうかを確認
[root@m01 ~]# ansible all -m ping epel、firewalld、selinux、ww
1.基礎環境:
1.すべてのホストはrsyncとnfs-utilsをインストールする必要がある2.すべてのホストは対応するrsyncクライアントのパスワードファイル/etc/rsync.passを用意する必要がある3.すべてのホストはuidとgidが666のwwwユーザーを作成する必要がある4.すべてのホストは全ネットワークバックアップのスクリプトを必要とし、タイミングタスクを構成する必要がある
1.rsyncとnfs-utilsのインストール
[root@m01 ~]# ansible all -m yum -a “name=rsync,nfs-utils state=installed”
2.rsyncのクライアントパスワードファイルの準備
[root@m01 ~]# ansible all -m copy -a “content=’1′ dest=/etc/rsync.pass owner=root group=root mode=600”
3.対応するwwwユーザーを準備し、uidとgidは666
[root@m01 ~]# ansible all -m group -a “name=www gid=666” [root@m01 ~]# ansible all -m user -a “name=www uid=666 group=666 create_home=no shell=/sbin/nologin”
4.対応するスクリプト・ファイルを管理からコピーし、タイミング・タスクに追加
[root@m01 ~]# ansible all -m copy -a “src=./scripts/rsync_backup_md5.sh dest=/server/scripts/mode=755” [root@m01 ~]# ansible all -m cron -a “name=’Rsync Bakcup Scripts’ hour=01 minute=00 job=’/bin/bash/server/scripts/rsync_backup_md5.sh &>/dev/null'” [root@m01 ~]# pwd/root [root@m01 ~]# mkdir scripts [root@m01 ~]# cat scripts/rsync_backup_md5.sh
#!/usr/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#1.
Host=$(hostname)
Addr=$(ifconfig eth1|awk 'NR==2{print $2}')
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}
Path=/backup
#2.
[ -d $Path/$Dest ] || mkdir -p $Path/$Dest
#3.
cd / && \
[ -f $Path/$Dest/system.tar.gz ] || tar czf $Path/$Dest/system.tar.gz etc/fstab etc/rsyncd.conf && \
[ -f $Path/$Dest/log.tar.gz ] || tar czf $Path/$Dest/log.tar.gz var/log/messages var/log/secure && \
#4. md5
[ -f $Path/$Dest/${Date}.flag ] || md5sum $Path/$Dest/*.tar.gz >$Path/$Dest/${Date}.flag
#4.
export RSYNC_PASSWORD=1
rsync -avz $Path/ [email protected]::backup
#5. 7
find $Path/ -type d -mtime +7|xargs rm -rf
2.アプリケーション環境:(rsyncサービスの構成->Backupサーバ)
1.rsyncのインストール2.rsyncの構成、/etc/rsyncd.conf 3.ディレクトリの作成、仮想ユーザーファイルの作成、権限の変更4.サービスの開始、電源投入自起動5.メールボックスの構成、対応するスクリプトの準備
1.rsyncのインストール
[root@m01 ~]# ansible backup -m yum -a "name=rsync state=installed"
2.rsync,/etc/rsyncd.confの構成
[root@m01 ~]# ansible backup -m copy -a "src=./conf/rsyncd.conf dest=/etc/rsyncd.conf"
[root@m01 ~]# pwd
/root
[root@m01 ~]# mkdir conf
[root@m01 ~]# cat conf/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
#####################################
[backup]
path = /backup
[data]
path = /data
3.ディレクトリの作成、権限の変更、仮想ユーザーファイルの作成
[root@m01 ~]# ansible backup -m file -a "path=/backup state=directory mode=755 owner=www group=www"
[root@m01 ~]# ansible backup -m file -a "path=/data state=directory mode=755 owner=www group=www"
[root@m01 ~]# ansible backup -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password mode=600 owner=root group=root"
4.サービスを起動し、起動してから起動する
[root@m01 ~]# ansible backup -m service -a "name=rsyncd state=started enabled=yes"
5.メールボックスの構成、対応するスクリプトの準備3.アプリケーション環境:(nfsサービスの構成)
1.nfs-utilsをインストールする2.nfs-utilsを構成する3.対応する共有ディレクトリを作成し、権限を変更する4.nfsを起動する
1.nfs-utilsのインストール
[root@m01 ~]# ansible nfs -m yum -a "name=nfs-utils state=installed"
2.nfs-utilsの構成
[root@m01 ~]# ansible nfs -m copy -a "content='/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' dest=/etc/exports"
3.対応する共有ディレクトリを作成し、権限を再帰的に変更する
[root@m01 ~]# ansible nfs -m file -a "path=/data state=directory recurse=yes owner=www group=www mode=755"
4.nfsを起動する
[root@m01 ~]# ansible nfs -m service -a "name=nfs-server state=started enabled=yes"
4.アプリケーション環境:(ウェブサービスの構成、マウント操作)
[root@m01 ~]# ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"
検証:
1.nfsストレージが使用可能かどうかを検証する2.rsyncが3.backupサーバのプッシュを完了できるかどうかを検証する4.リアルタイム同期