LoginSignup
1
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-05

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
サーバの責務はこちらで確認ください。

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

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

image

2.playbookファイルの相関

以下に「manageterm」のディレクトリ構造を示す。
ミドルウェアやOS単位にinstaller/settings/firewalldのディレクトリを作成し、その中にZIPファイルや設定ファイルを置く。
outputディレクトリのみ特別で後述するopenvpnで作成したクライアント証明書を配置する。

image

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を設定する」について。

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1