AnsibleのWebUIというと Ansible Tower や AWX がありますが polemarch というものを見つけたので使ってみました。
環境
項目 | バージョン |
---|---|
OS | CentOS7.6 |
polmearch
インストール
インストールドキュメントは以下を参考にしていますが、手順通りに行かない部分があったので一通り書いておきます。
必要パッケージをインストール
必要なパッケージをインストールします。
1 2 3 4 |
[root@polemarch ~]# yum -y install epel-release [root@polemarch ~]# yum -y install https://$(rpm -E '%{?centos:centos}%{!?centos:rhel}%{rhel}').iuscommunity.org/ius-release.rpm [root@polemarch ~]# yum -y install python36u python36u-devel openssl-devel libyaml-devel krb5-devel krb5-libs openldap-devel mariadb-devel git sshpass mariadb-server redis gcc |
ユーザー追加
ユーザーを追加します。
1 2 |
[root@polemarch ~]# useradd --user-group --create-home --shell /bin/bash polemarch |
mariadb起動
mariadbの設定をします。
1 2 3 4 5 6 |
[root@polemarch ~]# vi /etc/my.cnf [mysqld] (snip) character-set-server=utf8 (snip) |
mariadbを起動します。
1 2 3 |
[root@polemarch ~]# systemctl start mariadb [root@polemarch ~]# systemctl enable mariadb |
DBを作成します。
環境に応じてユーザー名やパスワードを設定してください
1 2 3 4 5 6 7 |
[root@polemarch ~]# sudo -H mysql <<QUERY_INPUT SET @@global.innodb_large_prefix = 1; create user db_user; create database db_name default CHARACTER set utf8 default COLLATE utf8_general_ci; grant all on db_name.* to 'db_user'@'localhost' identified by 'db_password'; QUERY_INPUT |
タイムゾーンの設定をします。
1 2 3 4 |
[root@polemarch ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo -H mysql mysql Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it. |
redisの起動
redisを起動します。
1 2 3 |
[root@polemarch ~]# systemctl start redis [root@polemarch ~]# systemctl enable redis |
polemarchの設定ファイル作成
polemarchの設定ファイルを作成します。
1 2 3 4 |
[root@polemarch ~]# mkdir /etc/polemarch/ [root@polemarch ~]# touch /etc/polemarch/settings.ini [root@polemarch ~]# chown polemarch.root /etc/polemarch/settings.ini |
ログとpidのディレクトリを作成
以下のディレクトリを作成します。
1 2 3 |
[root@polemarch ~]# mkdir /opt/polemarch/logs /opt/polemarch/pid [root@polemarch ~]# chown polemarch.polemarch /opt/polemarch/logs /opt/polemarch/pid |
virtualenv作成
virtualenvを作成します。
1 2 3 |
[root@polemarch ~]# python3.6 -m venv /opt/polemarch [root@polemarch ~]# chown -R polemarch:polemarch /opt/polemarch |
pythonのパッケージをインストール
polemarchで必要なpythonのパッケージをインストールします。
1 2 3 4 |
[root@polemarch ~]# sudo -u polemarch -i [polemarch@polemarch ~]$ source /opt/polemarch/bin/activate (polemarch) [polemarch@polemarch ~]$ pip install -U polemarch mysqlclient |
polemarchの設定追加
polemarchの設定を追加します。
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 |
(polemarch) [polemarch@polemarch ~]$ vi /etc/polemarch/settings.ini [database] engine = django.db.backends.mysql name = db_name user = db_user password = db_password [database.options] connect_timeout = 20 init_command = SET sql_mode='STRICT_TRANS_TABLES', default_storage_engine=INNODB, NAMES 'utf8', CHARACTER SET 'utf8', SESSION collation_connection = 'utf8_unicode_ci' [cache] backend = django_redis.cache.RedisCache location = redis://127.0.0.1:6379/1 [locks] backend = django_redis.cache.RedisCache location = redis://127.0.0.1:6379/2 [rpc] connection = redis://127.0.0.1:6379/3 heartbeat = 5 concurrency = 8 enable_worker = true [uwsgi] processes = 4 threads = 4 harakiri = 120 vacuum = True pidfile = /opt/polemarch/pid/polemarch.pid log_file = /opt/polemarch/logs/{PROG_NAME}_web.log [worker] # output will be /opt/polemarch/logs/polemarch_worker.log logfile = /opt/polemarch/logs/{PROG_NAME}_worker.log # output will be /opt/polemarch/pid/polemarch_worker.pid pidfile = /opt/polemarch/pid/{PROG_NAME}_worker.pid loglevel = INFO |
polemarchのマイグレーション
マイグレーションを実行します。
1 2 |
(polemarch) [polemarch@polemarch ~]$ polemarchctl migrate |
polemarchを起動
polemarchを起動します。
1 2 |
(polemarch) [polemarch@polemarch ~]$ polemarchctl webserver |
polemarch管理者ユーザーのパスワード変更
polemarchの管理者ユーザーのパスワードを変更します。
1 2 3 4 5 6 |
(polemarch) [polemarch@polemarch ~]$ polemarchctl changepassword admin Changing password for user 'admin' Password: Password (again): Password changed successfully for user 'admin' |
polemarchのWebUI操作
ログイン
以下のアドレスへアクセスしてログインします。
URL |
---|
http://IP or FQDN:8080 |
プロジェクト作成
ここでは、GitHubにあるサンプルリポジトリを登録します。
Projects
を選択して New
をクリックします。
Name
Repo type
Repo url
を入力して Save
をクリックします。
作成したプロジェクトの Sync
をクリックしてリポジトリを取得します。
Status
が OK
になったことを確認します。
インベントリを作成
Inventories
を選択して New
をクリックします。
Name
を入力して Save
をクリックします。
グループとホスト作成
作成したインベントリの Group
をクリックして New
をクリックします。
Name
を入力して Save
をクリックします。
作成したグループの Host
を選択して New
クリックします。
Name
を入力して Save
をクリックします。
作成したホストの Variables
をクリックして変数を追加します。
Variablesは以下のように登録しました。
Playbookを実行
Projects
を選択して作成したプロジェクトへ移動します。
inventory
をクリックして作成したインベントリを紐づけます。
Add
をクリックしてインベントリを登録します。
Execute playbook
をクリックします。
Add field
で Inventory
を選択します。
Playbook
を選択して Inventory
を設定し Execute
をクリックします。
結果は以下のように表示されます。
Home
をクリックすればAnsible Tower(AWX)のようなダッシュボードが見れます。
最後に
いくつかバグっぽい挙動(インベントリのインポート処理でパースエラーで取り込めなかったり)がありましたが、手動で登録すれば問題なく動きました。
AWXを使うかpolemarchを使うかは好みでしょうか。