質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

2663閲覧

AnsibleでTomcatをインストールする方法

papachiropa

総合スコア15

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2020/05/27 11:15

編集2020/05/31 13:15

Ansibleで構築対象サーバにTomcatをインストールするのですが
下記の自作playbook(正常に動作することを確認済)に
2つほど条件を追加したいです。
OSはAnsible操作端末も構築対象サーバもCentOS7です。
①設定ファイル(tomcat.serviceとtomcat-userファイル)を外部ファイルにしたいです。ファイルとして外出ししてplaybookでこれらを読み込んで実行する形にしたいです。
②複数台のサーバに対して制御してインストール出来るようにしたいです。イメージとしてはサーバA(192.168.100.251)、B(192.168.100.252)、C(192.168.100.253)とあって、playbookを実行したらAとCだけにTomcatがインストールされるような感じにしたいです。

YAML

1- hosts: 192.168.100.251 2 remote_user: root 3 become: true 4 tasks: 5 - name: correct java version selected 6 alternatives: 7 name: java 8 path: /usr/java/jdk1.8.0_202-amd64/jre/bin/java 9 10 - name: add tomcatuser 11 user: 12 name: tomcat 13 shell: /sbin/nologin 14 15 - name: get_installer 16 get_url: 17 url: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.76/bin/apache-tomcat-7.0.76.tar.gz 18 dest: /tmp/ 19 become: yes 20 become_user: root 21 22 - name: copy 23 command: cp -p /tmp/apache-tomcat-7.0.76.tar.gz /usr/local/ 24 25 - name: install 26 unarchive: 27 src: /usr/local/apache-tomcat-7.0.76.tar.gz 28 dest: /usr/local 29 remote_src: yes 30 become: yes 31 become_user: root 32 33 - name: Firewall 34 firewalld: 35 port: 8080/tcp 36 permanent: yes 37 immediate: yes 38 state: enabled 39 become: yes 40 41 - name: Change file ownership, group and permissions 42 file: 43 path: /usr/local/apache-tomcat-7.0.76 44 owner: tomcat 45 group: tomcat 46 recurse: yes 47 state: directory 48 49 - name: make tomcat symbolic 50 file: 51 src: /usr/local/apache-tomcat-7.0.76 52 dest: /usr/local/tomcat7 53 owner: tomcat 54 group: tomcat 55 state: link 56 57 - name: make tomcat.service 58 file: 59 path=/etc/systemd/system/tomcat.service 60 state=touch 61 62 - name: edit tomcat.service 63 blockinfile: 64 dest: /etc/systemd/system/tomcat.service 65 insertafter: 66 block: | 67 [Unit] 68 Description=Apache Tomcat 7 69 After=syslog.target network.target 70 71 [Service] 72 User=tomcat 73 Group=tomcat 74 Type=oneshot 75 PIDFile=/usr/local/apache-tomcat-7.0.76/tomcat.pid 76 RemainAfterExit=yes 77 78 ExecStart=/usr/local/apache-tomcat-7.0.76/bin/startup.sh 79 ExecStop=/usr/local/apache-tomcat-7.0.76/bin/shutdown.sh 80 ExecReStart=/usr/local/apache-tomcat-7.0.76/bin/shutdown.sh;/usr/local/apache-tomcat-7.0.76/bin/startup.sh 81 82 [Install] 83 WantedBy=multi-user.target 84 85 - name: chmod 755 tomcat.service 86 file: 87 path=/etc/systemd/system/tomcat.service 88 mode=0755 89 90 - name: edit tomcat-users.xml 91 blockinfile: 92 dest: /usr/local/apache-tomcat-7.0.76/conf/tomcat-users.xml 93 insertafter: <tomcat-users> 94 block: | 95 <role rolename="admin-gui"/> 96 <role rolename="manager-gui"/> 97 <user username="tomcat" password="P@ssw0rd123" roles="admin-gui,manager-gui"/> 98 99 - name: start tomcat 100 systemd: 101 name: tomcat.service 102 state: started 103 daemon_reload: yes 104 enabled: yes 105 become: yes

ご教示宜しくお願い致します。

下記Oracle JDKインストール用

YAML

1- hosts: tomcat 2 gather_facts: no 3 remote_user: root 4 become: true 5 tasks: 6 - name: create target dir. 7 file: path=/root/soft state=directory 8 - copy: 9 src=/tmp/jdk-8u202-linux-x64.rpm 10 dest=/root/soft/jdk-8u202-linux-x64.rpm 11 owner=root 12 group=root 13 mode=0644 14 - name: install JDK 14 from a local file 15 yum: name=/root/soft/jdk-8u202-linux-x64.rpm state=present

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

①設定ファイル(tomcat.serviceとtomcat-userファイル)を外部ファイルにしたいです。ファイルとして外出ししてplaybookでこれらを読み込んで実行する形にしたいです。

templateモジュールを利用することで設定ファイルなどを展開することができます。

②複数台のサーバに対して制御してインストール出来るようにしたいです。イメージとしてはサーバA(192.168.100.251)、B(192.168.100.252)、C(192.168.100.253)とあって、playbookを実行したらAとCだけにTomcatがインストールされるような感じにしたいです。

インベントリファイルを使用して、グルーピングすることができます
例:上記のA、Cをapacheグループとして設定

host.config

1[apache] 2192.168.100.251 3192.168.100.253 4 5[hoge] 6192.168.100.252

playbook.yml

1 2# apacheグループに対してのみにplayを実行 3- name: Install Apache Playbook 4 hosts: apache 5 remote_user: root 6 become: true 7 tasks: 8 - name: task 9

shell

1ansible-playbook -i host.config playbook.yml

投稿2020/05/27 12:51

comefigo

総合スコア1051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papachiropa

2020/05/29 05:49

ありがとうございます。作成したplaybookを実行してみたのですが、 TASKの箇所でフリーズしてしまいます。(ok: [192.168.100.253]という表示は出ます) これはサーバCとの通信に何か問題があるのが原因なのでしょうか? ansible 192.168.100.253 -m pingは成功します。
comefigo

2020/05/29 07:45

tasks配下はpapachiropaさんが上記で提示されたplaybookのtasksを記載されていますでしょうか? また、ok:[192.168.100.253]が表示されていますが、192.168.100.251はok表示されていないのでしょうか?
papachiropa

2020/05/31 13:22

お返事遅れて申し訳ございません。 >tasks配下はpapachiropaさんが上記で提示されたplaybookのtasksを記載されていますでしょうか? はい、記載しております。 事情によりサーバA~Cを作り直しました。サーバAとCにOracle JDKを入れ直すことになったのですが(playbook追記しました)Tomcatインストールのときと同様にまたTASKの箇所で「changed: [192.168.100.251]」と表示されてフリーズします。192.168.100.253は表示されません。「ansible 192.168.100.25x -m ping」はいずれも成功するので疎通的には問題ないと思うのですが…宜しくお願い致します。
papachiropa

2020/05/31 13:25

フリーズ中にEnterキーを押すと下記メッセージが出ました。 PLAY [tomcat] ************************************************************************************************************************* TASK [create target dir.] ************************************************************************************************************* Enter passphrase for key '/root/.ssh/id_rsa': Enter passphrase for key '/root/.ssh/id_rsa': changed: [192.168.100.251](※←ここでフリーズ) fatal: [192.168.100.253]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true} TASK [copy] *************************************************************************************************************************** Enter passphrase for key '/root/.ssh/id_rsa': changed: [192.168.100.251] TASK [install JDK 14 from a local file] *********************************************************************************************** nichanged: [192.168.100.251] to retry, use: --limit @/tmp/OracleJDK.retry PLAY RECAP **************************************************************************************************************************** 192.168.100.251 : ok=3 changed=3 unreachable=0 failed=0 192.168.100.253 : ok=0 changed=0 unreachable=1 failed=0 192.168.100.253とは通信出来ていないということでしょうか…
comefigo

2020/06/01 00:51

> Enter passphrase for key '/root/.ssh/id_rsa': Enter passphrase for key '/root/.ssh/id_rsa': changed: [192.168.100.251](※←ここでフリーズ) でSSH鍵のパスワードの入力待ち状態で止まっていますね。Ansibleのタイムアウト時間(デフォルト30分)までフリーズ状態になります。 ansible_ssh_pass変数を定義すればSSHパスワード自動入力されます。(本番運用する際はパスワードをvaultで暗号化したほうがいいです) > fatal: [192.168.100.253]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true} ちなみもSSH鍵の(所有権か実行)権限の問題で接続できていないですね。
papachiropa

2020/06/01 02:58

vault等全く分からないのでちょっと自分で調べてみます。 ご回答ありがとうございました。
comefigo

2020/06/01 08:52

まず、vaultなしでパスワード設定して通るところまで確認しておきましょう!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問