Ansible Towerで自動生成したファイルなどの保存先をどうしようかな?と思っていたのですが、owncloud使うと便利かも!と思いAnsible Towerとowncloudを連携してowncloud上でファイル作成・保存する自動化をやってみました。
環境
項目 | バージョン | 備考 |
---|---|---|
CentOS | 7.5.1804 | owncloudのコンテナを動かすホスト |
RHEL | 7.6 | Ansible Towerホスト |
Ansible Tower | 3.5.1 | |
owncloud | 10.2.1 |
処理の流れ
ここでやろうとしていることは以下の通りです。
- Ansible Towerでowncloud(コンテナ)へSSH接続
- 指定したディレクトリに秘密鍵とCSRを作成
- owncloudで表示されるように更新処理を実行
ちなみに、owncloudにはWebDAVの API は用意されていますが、ここではSSH接続でやってみます。
準備
コンテナ
今回は、owncloudをコンテナ上で動作させます。
コンテナイメージは以下のように作成しました。
Ansible TowerのSSH接続で使う鍵は環境に合わせて作ってみてください。
Playbook
Ansible Towerで実行するPlaybookは以下のように作成しました。
ここでは、次のPlaybookを流用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
--- - name: This playbook for generate certificate signing request file hosts: all gather_facts: no tasks: - name: Set root_dir path variable. set_fact: root_dir: "/var/www/html/owncloud/data/{{ owncloud_user }}/files/{{ dir_name }}" - name: Create for certificate save directory. file: path: "{{ root_dir }}" state: directory - name: Generate an OpenSSL private key. openssl_privatekey: path: "{{ root_dir }}/{{ common_name }}.key" passphrase: "{{ private_key_password }}" cipher: "{{ private_key_chipher }}" type: "{{ private_key_type }}" size: "{{ private_key_size }}" - name: Generate an OpenSSL certificate signing request. openssl_csr: path: "{{ root_dir }}/{{ common_name }}.csr" privatekey_passphrase: "{{ private_key_password }}" privatekey_path: "{{ root_dir }}/{{ common_name }}.key" country_name: "{{ csr_country_name }}" state_or_province_name: "{{ csr_state_or_province_name }}" locality_name: "{{ csr_locality_name }}" organization_name: "{{ csr_organization_name }}" organizational_unit_name: "{{ csr_organizational_unit_name }}" common_name: "{{ common_name }}" email_address: "{{ csr_email }}" key_usage: "{{ csr_key_usage }}" extended_key_usage: "{{ csr_extended_key_usage }}" - name: Change file ownership and group. file: path: "/var/www/html/owncloud/data/{{ owncloud_user }}" owner: apache group: apache recurse: yes - name: owncloud file scan. command: "su - apache -s /bin/bash -c \"/usr/local/bin/php /var/www/html/owncloud/console.php files:scan {{ owncloud_user }}\"" |
一部追加した変数は以下のものです。
変数 | 説明 |
---|---|
owncloudu | owncloudで使用するユーザー名 |
実行
以下は、デモ動画です。
Demo to create a file on owncloud with Ansible Tower from sky_joker on Vimeo.
ディレクトリおよび秘密鍵・CSRが生成されてowncloud上からファイルをダウンロードすることができました 🙂
最後に
Ansible Towerとowncloudの連携動作が確認できたので、今後はAnsible Towerで生成したレポートなどもowncloudに保存して他の人やチームと共有することもできそうです 🙂
時間があったら Alfresco との連携もやってみたいと思います。
それでは、みんなでハッピーオートメーション!