AnsibleAWXを使用して、Linux環境にSubversionのインストールから初期設定までを行うプレイブック(スクリプト)をご紹介したいと思います。
構築する環境
AnsibleAWXを使用して、どのような環境を構築するか説明します。
- OS:AlmaLinux8.4(インストール済み)
- ミドル:Subversion(インストールされていない場合にインストール)
また、インストールしたSubversionに以下の設定を行います。
- リポジトリの作成
- trunk、branches、tags ディレクトリの作成
- svnserve.confの設定変更
- 認証なし読み取り権限の設定
- 認証あり書き込み権限の設定
- ユーザー・パスワードを使用するよう設定
- passwdの設定変更
ユーザー・パスワードの作成 - svnserveデーモンの起動
AWXの設定
AnsibleAWXでの各種設定についての説明になります。
インベントリー、認証情報については特別な設定を行っていませんので、以下を参考にして下さい。
・インベントリー
・認証情報
テンプレート
今回実行するテンプレートの設定についての説明になります。
項目 | 設定値 |
---|---|
名前 | Setup Subversion |
説明 | Subversionのインストール |
ジョブタイプ | 実行 |
インベントリー | Test Server Inventory |
プロジェクト | 秋拓プロジェクト |
PLAYBOOK | setup_subversion.yml |
認証情報 | awx |
詳細 | 1(Verbose) |
テンプレート追加変数の設定は以下になります。
これらの設定を変更することで、リポジトリ名やリポジトリを格納するディレクトリを変更することが可能です。
---
# リポジトリ管理ディレクトリ
repo_path: /svn_repo
# リポジトリ名
repo_name: test_repo
# リポジトリ作業ディレクトリ
repo_work: /tmp
プレイブック
今回実行するプレイブックになります。
---
- hosts: all
gather_facts: False
tasks:
- name: "Subversionインストール"
yum:
name: subversion
state: latest
become: yes
- name: "リポジトリ格納ディレクトリ作成"
file:
path: "{{ repo_path }}"
state: directory
owner: awx
group: awx
mode: 0775
become: yes
- name: "リポジトリ存在確認"
stat:
path: "{{ repo_path }}/{{ repo_name }}"
register: repo_exists
- name: "リポジトリ作成"
shell: "svnadmin create {{ repo_path }}/{{ repo_name }}"
when: repo_exists.stat.exists == false
- name: "作業ディレクトリ削除"
file:
path: "{{ repo_work }}/{{ repo_name }}"
state: absent
- name: "チェックアウト"
subversion:
repo: "file://{{ repo_path }}/{{ repo_name }}"
dest: "{{ repo_work }}/{{ repo_name }}"
switch: no
- name: "trunkディレクトリ存在確認"
stat:
path: "{{ repo_work }}/{{ repo_name }}/trunk"
register: repo_exists
- name: "trunkディレクトリ作成"
shell: "svn mkdir file://{{ repo_path }}/{{ repo_name }}/trunk -m 'create'"
args:
warn: false
when: repo_exists.stat.exists == false
- name: "チェックアウト"
subversion:
repo: "file://{{ repo_path }}/{{ repo_name }}"
dest: "{{ repo_work }}/{{ repo_name }}"
switch: no
- name: "branchesディレクトリ存在確認"
stat:
path: "{{ repo_work }}/{{ repo_name }}/branches"
register: repo_exists
- name: "branchesディレクトリ作成"
shell: "svn mkdir file://{{ repo_path }}/{{ repo_name }}/branches -m 'create'"
args:
warn: false
when: repo_exists.stat.exists == false
- name: "チェックアウト"
subversion:
repo: "file://{{ repo_path }}/{{ repo_name }}"
dest: "{{ repo_work }}/{{ repo_name }}"
switch: no
- name: "tagsディレクトリ存在確認"
stat:
path: "{{ repo_work }}/{{ repo_name }}/tags"
register: repo_exists
- name: "tagsディレクトリ作成"
shell: "svn mkdir file://{{ repo_path }}/{{ repo_name }}/tags -m 'create'"
args:
warn: false
when: repo_exists.stat.exists == false
- name: "作業ディレクトリ削除"
file:
path: "{{ repo_work }}/{{ repo_name }}"
state: absent
- name: "svnserve.conf設定変更"
lineinfile:
dest: "{{ repo_path }}/{{ repo_name }}/conf/svnserve.conf"
state: present
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
with_items:
- regexp: "# anon-access = read"
line: "anon-access = read"
- regexp: "# auth-access = write"
line: "auth-access = write"
- regexp: "# password-db = passwd"
line: "password-db = passwd"
- name: "passwd設定変更"
blockinfile:
dest: "{{ repo_path }}/{{ repo_name }}/conf/passwd"
insertafter: "^# sally = sallyssecret$"
content: "awx = awx"
- name: "svnserveデーモンプロセス情報取得"
shell: "ps -ef | grep svn"
register: svnserve_daemon
- name: "svnserveデーモンプロセス情報確認"
set_fact:
svnserve_daemon_flg: true
with_items: "{{ svnserve_daemon.stdout_lines }}"
when: item | regex_search(".*"~"svnserve --daemon")
- name: "svnserveデーモン起動"
shell: "svnserve --daemon"
when: svnserve_daemon_flg is not defined
- name: "svnserveデーモン起動確認"
shell: "svn log svn://localhost{{ repo_path }}/{{ repo_name }}"
args:
warn: false
実行結果
以下の2パターンで実行した結果になります。
① サーバーにSVNがインストールされていない状態で実行
② 「①」を実行した直後に同じ条件で再度実行
実行結果①:サーバーにSVNがインストールされていない状態で実行
接続先のサーバーに、SVNがインストールされていない状態でジョブを実行すると、SVNのインストールやリポジトリの作成が実行されます。
Using /etc/ansible/ansible.cfg as config file
SSH password:
PLAY [all] *********************************************************************
TASK [Subversionインストール] ********************************************************
changed: [192.168.56.105] => {"ansible_facts": {"pkg_mgr": "dnf"}, "changed": true, "msg": "", "rc": 0, "results": ["Installed: utf8proc-2.1.1-5.module_el8.3.0+2053+ac338b6d.x86_64", "Installed: apr-1.6.3-12.el8.x86_64", "Installed: subversion-1.10.2-4.module_el8.3.0+2053+ac338b6d.x86_64", "Installed: apr-util-1.6.1-6.el8.x86_64", "Installed: apr-util-bdb-1.6.1-6.el8.x86_64", "Installed: subversion-libs-1.10.2-4.module_el8.3.0+2053+ac338b6d.x86_64", "Installed: libserf-1.3.9-9.module_el8.3.0+2053+ac338b6d.x86_64", "Installed: apr-util-openssl-1.6.1-6.el8.x86_64"]}
TASK [リポジトリ格納ディレクトリ作成] *********************************************************
changed: [192.168.56.105] => {"changed": true, "gid": 1000, "group": "awx", "mode": "0775", "owner": "awx", "path": "/svn_repo", "size": 6, "state": "directory", "uid": 1000}
TASK [リポジトリ存在確認] ***************************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"exists": false}}
TASK [リポジトリ作成] *****************************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svnadmin create /svn_repo/test_repo", "delta": "0:00:00.038152", "end": "2022-03-27 06:38:30.475891", "rc": 0, "start": "2022-03-27 06:38:30.437739", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
TASK [作業ディレクトリ削除] **************************************************************
ok: [192.168.56.105] => {"changed": false, "path": "/tmp/test_repo", "state": "absent"}
TASK [チェックアウト] *****************************************************************
changed: [192.168.56.105] => {"after": ["Revision: 0", "URL: file:///svn_repo/test_repo"], "before": null, "changed": true}
TASK [trunkディレクトリ存在確認] *********************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"exists": false}}
TASK [trunkディレクトリ作成] ***********************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svn mkdir file:///svn_repo/test_repo/trunk -m 'create'", "delta": "0:00:00.027096", "end": "2022-03-27 06:38:34.053465", "rc": 0, "start": "2022-03-27 06:38:34.026369", "stderr": "", "stderr_lines": [], "stdout": "Committing transaction...\\nCommitted revision 1.", "stdout_lines": ["Committing transaction...", "Committed revision 1."]}
TASK [チェックアウト] *****************************************************************
changed: [192.168.56.105] => {"after": ["Revision: 1", "URL: file:///svn_repo/test_repo"], "before": ["Revision: 0", "URL: file:///svn_repo/test_repo"], "changed": true}
TASK [branchesディレクトリ存在確認] ******************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"exists": false}}
TASK [branchesディレクトリ作成] ********************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svn mkdir file:///svn_repo/test_repo/branches -m 'create'", "delta": "0:00:00.023883", "end": "2022-03-27 06:38:36.447324", "rc": 0, "start": "2022-03-27 06:38:36.423441", "stderr": "", "stderr_lines": [], "stdout": "Committing transaction...\\nCommitted revision 2.", "stdout_lines": ["Committing transaction...", "Committed revision 2."]}
TASK [チェックアウト] *****************************************************************
changed: [192.168.56.105] => {"after": ["Revision: 2", "URL: file:///svn_repo/test_repo"], "before": ["Revision: 1", "URL: file:///svn_repo/test_repo"], "changed": true}
TASK [tagsディレクトリ存在確認] **********************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"exists": false}}
TASK [tagsディレクトリ作成] ************************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svn mkdir file:///svn_repo/test_repo/tags -m 'create'", "delta": "0:00:00.025264", "end": "2022-03-27 06:38:38.876870", "rc": 0, "start": "2022-03-27 06:38:38.851606", "stderr": "", "stderr_lines": [], "stdout": "Committing transaction...\\nCommitted revision 3.", "stdout_lines": ["Committing transaction...", "Committed revision 3."]}
TASK [作業ディレクトリ削除] **************************************************************
changed: [192.168.56.105] => {"changed": true, "path": "/tmp/test_repo", "state": "absent"}
TASK [svnserve.conf設定変更] *******************************************************
changed: [192.168.56.105] => (item={'regexp': '# anon-access = read', 'line': 'anon-access = read'}) => {"ansible_loop_var": "item", "backup": "", "changed": true, "item": {"line": "anon-access = read", "regexp": "# anon-access = read"}, "msg": "line replaced"}
changed: [192.168.56.105] => (item={'regexp': '# auth-access = write', 'line': 'auth-access = write'}) => {"ansible_loop_var": "item", "backup": "", "changed": true, "item": {"line": "auth-access = write", "regexp": "# auth-access = write"}, "msg": "line replaced"}
changed: [192.168.56.105] => (item={'regexp': '# password-db = passwd', 'line': 'password-db = passwd'}) => {"ansible_loop_var": "item", "backup": "", "changed": true, "item": {"line": "password-db = passwd", "regexp": "# password-db = passwd"}, "msg": "line replaced"}
TASK [passwd設定変更] **************************************************************
changed: [192.168.56.105] => {"changed": true, "msg": "Block inserted"}
TASK [svnserveデーモンプロセス情報取得] ****************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "ps -ef | grep svn", "delta": "0:00:00.012784", "end": "2022-03-27 06:38:43.122772", "rc": 0, "start": "2022-03-27 06:38:43.109988", "stderr": "", "stderr_lines": [], "stdout": "awx 24440 24439 0 06:38 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn\\nawx 24442 24440 0 06:38 pts/1 00:00:00 grep svn", "stdout_lines": ["awx 24440 24439 0 06:38 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn", "awx 24442 24440 0 06:38 pts/1 00:00:00 grep svn"]}
TASK [svnserveデーモンプロセス情報確認] ****************************************************
skipping: [192.168.56.105] => (item=awx 24440 24439 0 06:38 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn) => {"ansible_loop_var": "item", "changed": false, "item": "awx 24440 24439 0 06:38 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn", "skip_reason": "Conditional result was False"}
skipping: [192.168.56.105] => (item=awx 24442 24440 0 06:38 pts/1 00:00:00 grep svn) => {"ansible_loop_var": "item", "changed": false, "item": "awx 24442 24440 0 06:38 pts/1 00:00:00 grep svn", "skip_reason": "Conditional result was False"}
TASK [svnserveデーモン起動] **********************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svnserve --daemon", "delta": "0:00:00.013123", "end": "2022-03-27 06:38:44.310196", "rc": 0, "start": "2022-03-27 06:38:44.297073", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
TASK [svnserveデーモン起動確認] ********************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svn log svn://localhost/svn_repo/test_repo", "delta": "0:00:00.026138", "end": "2022-03-27 06:38:45.133391", "rc": 0, "start": "2022-03-27 06:38:45.107253", "stderr": "", "stderr_lines": [], "stdout": "------------------------------------------------------------------------\\nr3 | awx | 2022-03-27 06:38:38 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------\\nr2 | awx | 2022-03-27 06:38:36 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------\\nr1 | awx | 2022-03-27 06:38:34 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------", "stdout_lines": ["------------------------------------------------------------------------", "r3 | awx | 2022-03-27 06:38:38 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------", "r2 | awx | 2022-03-27 06:38:36 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------", "r1 | awx | 2022-03-27 06:38:34 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------"]}
PLAY RECAP *********************************************************************
192.168.56.105 : ok=20 changed=15 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
実行結果②:「①」を実行した直後に同じ条件で再度実行
「①」で、SVNのインストールやリポジトリが作成されているため、タスクは「ok」となり、処理は行われません。なので、実質「①」が完了した状態と同じ状態になります。このような挙動を「冪等性(べきとうせい)」と言います。ansibleの売り文句の一つなので、興味がある方は調べてみて下さい。
Using /etc/ansible/ansible.cfg as config file
SSH password:
PLAY [all] *********************************************************************
TASK [Subversionインストール] ********************************************************
ok: [192.168.56.105] => {"ansible_facts": {"pkg_mgr": "dnf"}, "changed": false, "msg": "Nothing to do", "rc": 0, "results": []}
TASK [リポジトリ格納ディレクトリ作成] *********************************************************
ok: [192.168.56.105] => {"changed": false, "gid": 1000, "group": "awx", "mode": "0775", "owner": "awx", "path": "/svn_repo", "size": 23, "state": "directory", "uid": 1000}
TASK [リポジトリ存在確認] ***************************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"atime": 1648377510.4451878, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 0, "charset": "binary", "ctime": 1648377510.4741876, "dev": 64768, "device_type": 0, "executable": true, "exists": true, "gid": 1000, "gr_name": "awx", "inode": 18117111, "isblk": false, "ischr": false, "isdir": true, "isfifo": false, "isgid": false, "islnk": false, "isreg": false, "issock": false, "isuid": false, "mimetype": "inode/directory", "mode": "0775", "mtime": 1648377510.4741876, "nlink": 6, "path": "/svn_repo/test_repo", "pw_name": "awx", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 86, "uid": 1000, "version": "3345422135", "wgrp": true, "woth": false, "writeable": true, "wusr": true, "xgrp": true, "xoth": true, "xusr": true}}
TASK [リポジトリ作成] *****************************************************************
skipping: [192.168.56.105] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [作業ディレクトリ削除] **************************************************************
ok: [192.168.56.105] => {"changed": false, "path": "/tmp/test_repo", "state": "absent"}
TASK [チェックアウト] *****************************************************************
changed: [192.168.56.105] => {"after": ["Revision: 3", "URL: file:///svn_repo/test_repo"], "before": null, "changed": true}
TASK [trunkディレクトリ存在確認] *********************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"atime": 1648378146.2646856, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 0, "charset": "binary", "ctime": 1648378146.2646856, "dev": 64768, "device_type": 0, "executable": true, "exists": true, "gid": 1000, "gr_name": "awx", "inode": 243343, "isblk": false, "ischr": false, "isdir": true, "isfifo": false, "isgid": false, "islnk": false, "isreg": false, "issock": false, "isuid": false, "mimetype": "inode/directory", "mode": "0775", "mtime": 1648378146.2646856, "nlink": 2, "path": "/tmp/test_repo/trunk", "pw_name": "awx", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 6, "uid": 1000, "version": "371468635", "wgrp": true, "woth": false, "writeable": true, "wusr": true, "xgrp": true, "xoth": true, "xusr": true}}
TASK [trunkディレクトリ作成] ***********************************************************
skipping: [192.168.56.105] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [チェックアウト] *****************************************************************
ok: [192.168.56.105] => {"after": ["Revision: 3", "URL: file:///svn_repo/test_repo"], "before": ["Revision: 3", "URL: file:///svn_repo/test_repo"], "changed": false}
TASK [branchesディレクトリ存在確認] ******************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"atime": 1648378148.3346775, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 0, "charset": "binary", "ctime": 1648378146.2626858, "dev": 64768, "device_type": 0, "executable": true, "exists": true, "gid": 1000, "gr_name": "awx", "inode": 17378970, "isblk": false, "ischr": false, "isdir": true, "isfifo": false, "isgid": false, "islnk": false, "isreg": false, "issock": false, "isuid": false, "mimetype": "inode/directory", "mode": "0775", "mtime": 1648378146.2626858, "nlink": 2, "path": "/tmp/test_repo/branches", "pw_name": "awx", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 6, "uid": 1000, "version": "2274607178", "wgrp": true, "woth": false, "writeable": true, "wusr": true, "xgrp": true, "xoth": true, "xusr": true}}
TASK [branchesディレクトリ作成] ********************************************************
skipping: [192.168.56.105] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [チェックアウト] *****************************************************************
ok: [192.168.56.105] => {"after": ["Revision: 3", "URL: file:///svn_repo/test_repo"], "before": ["Revision: 3", "URL: file:///svn_repo/test_repo"], "changed": false}
TASK [tagsディレクトリ存在確認] **********************************************************
ok: [192.168.56.105] => {"changed": false, "stat": {"atime": 1648378148.3346775, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 0, "charset": "binary", "ctime": 1648378146.2636857, "dev": 64768, "device_type": 0, "executable": true, "exists": true, "gid": 1000, "gr_name": "awx", "inode": 25808957, "isblk": false, "ischr": false, "isdir": true, "isfifo": false, "isgid": false, "islnk": false, "isreg": false, "issock": false, "isuid": false, "mimetype": "inode/directory", "mode": "0775", "mtime": 1648378146.2636857, "nlink": 2, "path": "/tmp/test_repo/tags", "pw_name": "awx", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 6, "uid": 1000, "version": "2602839948", "wgrp": true, "woth": false, "writeable": true, "wusr": true, "xgrp": true, "xoth": true, "xusr": true}}
TASK [tagsディレクトリ作成] ************************************************************
skipping: [192.168.56.105] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [作業ディレクトリ削除] **************************************************************
changed: [192.168.56.105] => {"changed": true, "path": "/tmp/test_repo", "state": "absent"}
TASK [svnserve.conf設定変更] *******************************************************
ok: [192.168.56.105] => (item={'regexp': '# anon-access = read', 'line': 'anon-access = read'}) => {"ansible_loop_var": "item", "backup": "", "changed": false, "item": {"line": "anon-access = read", "regexp": "# anon-access = read"}, "msg": ""}
ok: [192.168.56.105] => (item={'regexp': '# auth-access = write', 'line': 'auth-access = write'}) => {"ansible_loop_var": "item", "backup": "", "changed": false, "item": {"line": "auth-access = write", "regexp": "# auth-access = write"}, "msg": ""}
ok: [192.168.56.105] => (item={'regexp': '# password-db = passwd', 'line': 'password-db = passwd'}) => {"ansible_loop_var": "item", "backup": "", "changed": false, "item": {"line": "password-db = passwd", "regexp": "# password-db = passwd"}, "msg": ""}
TASK [passwd設定変更] **************************************************************
ok: [192.168.56.105] => {"changed": false, "msg": ""}
TASK [svnserveデーモンプロセス情報取得] ****************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "ps -ef | grep svn", "delta": "0:00:00.012209", "end": "2022-03-27 06:49:16.274583", "rc": 0, "start": "2022-03-27 06:49:16.262374", "stderr": "", "stderr_lines": [], "stdout": "awx 24536 1 0 06:38 ? 00:00:00 svnserve --daemon\\nawx 26217 26216 0 06:49 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn\\nawx 26219 26217 0 06:49 pts/1 00:00:00 grep svn", "stdout_lines": ["awx 24536 1 0 06:38 ? 00:00:00 svnserve --daemon", "awx 26217 26216 0 06:49 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn", "awx 26219 26217 0 06:49 pts/1 00:00:00 grep svn"]}
TASK [svnserveデーモンプロセス情報確認] ****************************************************
ok: [192.168.56.105] => (item=awx 24536 1 0 06:38 ? 00:00:00 svnserve --daemon) => {"ansible_facts": {"svnserve_daemon_flg": true}, "ansible_loop_var": "item", "changed": false, "item": "awx 24536 1 0 06:38 ? 00:00:00 svnserve --daemon"}
skipping: [192.168.56.105] => (item=awx 26217 26216 0 06:49 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn) => {"ansible_loop_var": "item", "changed": false, "item": "awx 26217 26216 0 06:49 pts/1 00:00:00 /bin/sh -c ps -ef | grep svn", "skip_reason": "Conditional result was False"}
skipping: [192.168.56.105] => (item=awx 26219 26217 0 06:49 pts/1 00:00:00 grep svn) => {"ansible_loop_var": "item", "changed": false, "item": "awx 26219 26217 0 06:49 pts/1 00:00:00 grep svn", "skip_reason": "Conditional result was False"}
TASK [svnserveデーモン起動] **********************************************************
skipping: [192.168.56.105] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [svnserveデーモン起動確認] ********************************************************
changed: [192.168.56.105] => {"changed": true, "cmd": "svn log svn://localhost/svn_repo/test_repo", "delta": "0:00:00.041270", "end": "2022-03-27 06:49:17.923860", "rc": 0, "start": "2022-03-27 06:49:17.882590", "stderr": "", "stderr_lines": [], "stdout": "------------------------------------------------------------------------\\nr3 | awx | 2022-03-27 06:38:38 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------\\nr2 | awx | 2022-03-27 06:38:36 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------\\nr1 | awx | 2022-03-27 06:38:34 -0400 (Sun, 27 Mar 2022) | 1 line\\n\\ncreate\\n------------------------------------------------------------------------", "stdout_lines": ["------------------------------------------------------------------------", "r3 | awx | 2022-03-27 06:38:38 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------", "r2 | awx | 2022-03-27 06:38:36 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------", "r1 | awx | 2022-03-27 06:38:34 -0400 (Sun, 27 Mar 2022) | 1 line", "", "create", "------------------------------------------------------------------------"]}
PLAY RECAP *********************************************************************
192.168.56.105 : ok=16 changed=4 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0
リポジトリへの接続確認
Ansibleで作成したSVNリポジトリが正しく作成されているかを確認するため、TortoiseSVNから接続してみます。
TortoiseSVNのインストール方法、リポジトリへの接続方法は下記をご覧ください。
リポジトリに接続して、branches、tags、trunkディレクトリをチェックアウトしてみます。
チェックアウトが正常に終了したので、SVNのインストールと初期構築も問題なく完了したようですね。
記事は以上になります。
Ansibleを活用することで、Subversionのインストールから初期構築まで簡単に行うことが出来ました。プレイブックを作成するまでは一苦労ですが、一度作成してしまえば、誰でも実行し、SVNリポジトリを作成出来ますよね。本記事を参考に作業の効率化を図って、どんどん業務を楽にしていきましょう。
コメント