Edited at

【連載01】209.ローカル(manageterm)にあるファイルをリモート(adminserv01)にコピーする

More than 3 years have passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。

最新のソースコードは【GitHub】で公開中です。

サーバの責務はこちらで確認ください。


1.ローカルファイル⇒リモートコピー設定概要

Ansible管理端末(manageterm)にあるyumではインストールしないミドルウェアや設定ファイル等は「manageterm」に事前に作成しておき「adminserv01」に一旦送る。


2.playbookファイルの相関

以下に「manageterm」のディレクトリ構造を示す。

ミドルウェアやOS単位にinstaller/settings/firewalldのディレクトリを作成し、その中にZIPファイルや設定ファイルを置く。

outputディレクトリのみ特別で後述するopenvpnで作成したクライアント証明書を配置する。


3.playbook(site.yml)

${ANSIBLE_HOME}/site.yml

メインとなるplaybook(site.yml)参照


4.ローカルからリモートへのファイル転送のplaybook(/operations/0071_filescopy.yml)

${ANSIBLE_HOME}/operations/0071_filescopy.yml

# ===================

# ローカル(manageterm)にあるファイルをadminserv01にコピーします。
# (後程adminserv01にNFSサーバを導入します。
# ここまで書いてなんですが実際はローカルからサーバにファイルを置く場合は
# rsyncを使用した方が簡単ですね。
# ===================
- hosts: adminserv01
sudo: no
vars_files:
- ../vars/filedir.yml
remote_user: root
tasks:

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にJDKを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルをコピーする。
# ===================
- name: JAVA関連コピー
file: state=directory path=/var/opt/data/nfs/java/installer/ follow=no recurse=yes #【4.A:ディレクトリを作成する】
- file: state=directory path=/var/opt/data/nfs/java/settings/ follow=no recurse=yes
- copy: src=../sendfiles/java/installer/ dest=/var/opt/data/nfs/java/installer/. #【4.B:ローカル(manageterm)からリモートのサーバへコピーする】
- copy: src=../sendfiles/java/settings/ dest=/var/opt/data/nfs/java/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にTOMCATを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: TOMCAT関連コピー
file: state=directory path=/var/opt/data/nfs/tomcat/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/tomcat/settings/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/tomcat/firewalld/ follow=no recurse=yes
- copy: src=../sendfiles/tomcat/installer/ dest=/var/opt/data/nfs/tomcat/installer/.
- copy: src=../sendfiles/tomcat/settings/ dest=/var/opt/data/nfs/tomcat/settings/.
- copy: src=../sendfiles/tomcat/firewalld/ dest=/var/opt/data/nfs/tomcat/firewalld/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にSeleniumを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: Selnium関連コピー
file: state=directory path=/var/opt/data/nfs/selenium/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/selenium/settings/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/selenium/firewalld/ follow=no recurse=yes
- copy: src=../sendfiles/selenium/installer/ dest=/var/opt/data/nfs/selenium/installer/.
- copy: src=../sendfiles/selenium/settings/ dest=/var/opt/data/nfs/selenium/settings/.
- copy: src=../sendfiles/selenium/firewalld/ dest=/var/opt/data/nfs/selenium/firewalld/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にJenkinsを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: JENKINS関連コピー
file: state=directory path=/var/opt/data/nfs/jenkins_mvn/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/jenkins_mvn/settings/ follow=no recurse=yes
- copy: src=../sendfiles/jenkins_mvn/installer/ dest=/var/opt/data/nfs/jenkins_mvn/installer/.
- copy: src=../sendfiles/jenkins_mvn/settings/ dest=/var/opt/data/nfs/jenkins_mvn/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にnfs exportsを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: NFS関連コピー
file: state=directory path=/var/opt/data/nfs/nfs/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/nfs/settings/ follow=no recurse=yes
- copy: src=../sendfiles/nfs/installer/ dest=/var/opt/data/nfs/nfs/installer/.
- copy: src=../sendfiles/nfs/settings/ dest=/var/opt/data/nfs/nfs/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)に
# NMONを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: OS関係:NMON, 環境変数のコピー
file: state=directory path=/var/opt/data/nfs/os/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/os/settings/ follow=no recurse=yes
- copy: src=../sendfiles/os/installer/ dest=/var/opt/data/nfs/os/installer/.
- copy: src=../sendfiles/os/settings/ dest=/var/opt/data/nfs/os/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)に
# Apacheを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: アパッチ関係:サーバ証明書コピー/秘密鍵/SSL設定/apj設定
file: state=directory path=/var/opt/data/nfs/apache/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/apache/settings/ follow=no recurse=yes
- copy: src=../sendfiles/apache/installer/ dest=/var/opt/data/nfs/apache/installer/.
- copy: src=../sendfiles/apache/settings/ dest=/var/opt/data/nfs/apache/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にMariaDB(MySQL)
# を配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: MarinaDB(MySQL)関係:my.conf
file: state=directory path=/var/opt/data/nfs/mysql/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/mysql/settings/ follow=no recurse=yes
- copy: src=../sendfiles/mysql/installer/ dest=/var/opt/data/nfs/mysql/installer/.
- copy: src=../sendfiles/mysql/settings/ dest=/var/opt/data/nfs/mysql/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)にopenvpnを配置する為のディレクトリを作成
# 作成したらディレクリにローカル(manageterm)から
# インストーラと設定ファイルとfirewalld設定をコピーする。
# ===================
- name: openvpn関係
file: state=directory path=/var/opt/data/nfs/openvpn/installer/ follow=no recurse=yes
- file: state=directory path=/var/opt/data/nfs/openvpn/settings/ follow=no recurse=yes
- copy: src=../sendfiles/openvpn/installer/ dest=/var/opt/data/nfs/openvpn/installer/.
- copy: src=../sendfiles/openvpn/settings/ dest=/var/opt/data/nfs/openvpn/settings/.

# ===================
# adminserv01のNFS共有用ディレクトリ(NFS起動前)に
# OpenVPNで作成したクライアント証明書を保存するフォルダをコピーする
# ===================
- name: OpenVPNにて作成したクライアント証明書を出力するディレクトリの作成
file: state=directory path=/var/opt/data/nfs/output follow=no recurse=yes

# ===================
# NFSルートディレクトリ(/var/opt/data/nfs)配下のオーナー/パーミッション
# を再帰的にinfra/infra 755に変更する
# ===================
- file: group={{path.dir.nfs_root.group}}
mode={{path.dir.nfs_root.permision}}
owner={{path.dir.nfs_root.user}}
path={{path.dir.nfs_root.path}}
state={{path.dir.nfs_root.state}}
recurse=true


5.変数設定playbook(/vars/filedir.yml)

${ANSIBLE_HOME}/vars/filedir.yml

前回のplaybook(/vars/filedir.yml)を参照。


6.補足説明

4.ローカルからリモートへのファイル転送のplaybook(/operations/0071_filescopy.yml)内のコメント(#【4.A:ディレクトリを作成する】)及び(#【4.B:ローカル(manageterm)からリモートのサーバへコピーする】)について。

4.A fileモジュール補足


file: state=directory path=/var/opt/data/nfs/java/installer/ follow=no recurse=yes #==>【4.A:ディレクトリを作成する】


208.必要なディレクトリを作成しオーナーとパーミッションを設定するの補足説明でも説明したfileモジュールを使用して、新たにサブディレクトリを作成していく。



fileモジュール(0071_filescopy.yml内コメント【4.A】より)

名前
説明
補足

recurse
stateがdirectoryの場合
再帰的に変更
chmod -R
chown -R

既に該当のpathがある場合は何もしない

4.B copyモジュール補足


copy: src=../sendfiles/java/installer/ dest=/var/opt/data/nfs/java/installer/. #【4.B:ローカル(manageterm)からリモートのサーバへコピーする】


copyモジュールは名前からするとリモートサーバ内でのコピーと勘違いしそうだが、実際はAnsibleを操作しているローカル端末からリモートのサーバにファイルをコピーする。



copyモジュール(0071_filescopy.yml内コメント【4.B】より)

名前
説明
補足

src
コピー元
chmod -R
chown -R

dest
コピー先
リモートのパスを指定

scpコマンドは以下の例をイメージすると分かり易いと思う。

例:(scp コピー元 コピー先サーバ:パス)


scp /tmp/abc adminser01:/tmp/aaa


次回は「210.HOSTSを設定する」について。

連載の目次は【こちら】です。