ansibleでrundeckサーバを作ってみた

###前提条件
・使用するもの
　AWSアカウント
　EC2(Amazon Linux)

・2台構成とし、以下の呼び方とする
　Ansibleサーバ：AnsibleがインストールされているEC2
　rundeckサーバ：rundeckをインストールさせたいただのEC2（ansibleコマンドにてrundeckがインストールされる予定）

##大まかな流れ
上記を実施する為の大まかな流れは以下の通り

⑴ansibleサーバの準備
⑵ansibleのファイル構成を考えて作成
⑶ansible-playbookコマンドの実行＝rundeckインストール

###手順⑴
①ansibleサーバを作るべく、ansibleをインストールする

```
# sudo amazon-linux-extras install ansible2　⇦インストールする
# ansible --version　⇦バージョンを確認する
```

②公開鍵を作成する

```
# cd /home/ec2-user/.ssh　⇦ディレクトリを移動する
# ssh-keygen -t rsa　⇦公開鍵を作成する
```

③作成した公開鍵をrundeckサーバへコピーする

```
# ssh-copy-id ec2-user@rundeckサーバのIPaddress
```

④ansibleサーバからrundeckサーバへログインできることを確認する

```
# ssh ec2-user@rundeckサーバのIPaddress
```

###手順⑵
ここから作業は作成したansibleサーバ内で行います。

①iventory.iniファイルを作成する

```
# iventory.ini
[rundeck_servers]
rundeckサーバのIPアドレス
```

②main.ymlを作成する

```
# main.yml
---
- hosts: rundeck_servers
  become: yes
  tasks:
   - include_tasks: rundeck.yml
```

③propertiesファイルを作成する

```
# rundeck-config.properties.txt
#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/var/lib/rundeck

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
# change hostname here
grails.serverURL=http://rundeckサーバのIPアドレス:4440　⇦作成したrundeckサーバのIPアドレスを指定して記載
```

```
# framework.properties.txt
# framework.properties -
#

# ----------------------------------------------------------------
# Rundeck server connection information
# ----------------------------------------------------------------

framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://rundeckサーバのIPアドレス:4440　⇦作成したrundeckサーバのIPアドレスを指定して記載

# ----------------------------------------------------------------
# Installation locations
# ----------------------------------------------------------------
```

④rundeck.ymlを作成する

```
---
 - name: Install java
   yum:
    name: java 
    state: present 

 - name: get a repository
   yum:
    name: http://repo.rundeck.org/latest.rpm
    state: present

 - name: Install rundeckd
   yum:
    name: rundeck
    state: present

 - name: create directory
   file:
    path: /var/lib/rundeck/lib
    state: directory
    owner: rundeck
    mode: 0755

 - name: install wget
   yum: name=wget state=installed

 - name: install JDBC　⇦mysqlと紐付けを実施したい場合は配置する必要がありました
   get_url:
    url: https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar
    dest: /var/lib/rundeck/lib

 - name: enable and start rundeckd
   systemd:
    name: rundeckd
    enabled: yes
    state: started

 - name: Install rundeck-cli
   yum:
    name: rundeck-cli
    state: present

 - name: Set a hostname
   ansible.builtin.hostname:
    name: rundeck

 - name: restart rundeckd
   systemd:
    name: rundeckd
    state: restarted

- name: copy rundeck-config.properties
   copy:
    src: /home/ec2-user/roles/rundeck/templates/rundeck-config.properties.txt
    dest: /etc/rundeck/rundeck-config.properties
    backup: no

 - name: copy framework.properties
   copy:
    src: /home/ec2-user/roles/rundeck/templates/framework.properties.txt
    dest: /etc/rundeck/framework.properties
    backup: no
```

###手順⑶
①ansible-playbook コマンドを実行する

```
# ansible-playbook -i iventory.ini main.yml --ask-become-pass
```

※「--ask-become-pass」を付けないとsudo権限がなく実行出来ないとのエラー発生したので必要でした。


次回はmysqlとの紐付けをしたymlを公開したいと思います。
ご覧いただきありがとうございました。


###参考にさせていただいたもの
http://serverarekore.blogspot.com/2018/09/ansiblerundeckmariadbubuntu1804.html

https://github.com/New-Edge-Engineering/ansible-rundeck