redmine&Postgresを公式イメージで構築し、ActiveDirectoryでユーザ認証するまで。 * インストール作業 [#e82ab510] ** docker [#cfbb28fa] # yum install docker # systemctl start docker # systemctl eneble docker # systemctl status docker ** Proxy環境設定 [#tb02631a] CentOS7 の 場合 # export http_proxy=http://192.168.10.251:8080/ # cp /usr/lib/systemd/system/docker.service /etc/systemd/system/ # vi /etc/systemd/system/docker.service -------------- [Service] ...... Environment="HTTP_PROXY=http://192.168.10.251:8080" Environment="HTTPS_PROXY=http://192.168.10.251:8080" -------------- # systemctl restart docker ** イメージ取得~コンテナ構築~起動 [#g2acd18f] # docker pull redmine # docker pull postgres # mkdir -p /srv/docker/redmine/postgres # mkdir -p /srv/docker/redmine/redmine # docker run -d --name=postgres-redmine -v /srv/docker/redmine/postgres:/var/lib/postgresql/data/pgdata -e PGDATA=/var/lib/postgresql/data/pgdata -e POSTGRES_PASSWORD=redminepwd -e POSTGRES_USER=redmineuser postgres # docker run -d --name=redmine -p 81:3000 --link=postgres-redmine:postgres -v /srv/docker/redmine/redmine:/usr/src/redmine/files redmine ※docker内の3000番ポートをホストの81番ポートに転送しています。 ** DockerコンテナのNAT追加 [#vbfdbf3e] 後述するLDAP認証する場合に、Docker内部のコンテナから外部サーバへアクセスするためNAT設定を追加する。~ CentOS7なのでfirewalldが動作しているのだが、Dockerはこれを迂回して直接iptablesをたたいているぽいのです。~ iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE * 環境設定 [#v5aef778] ** 初期ログイン [#p851f01b] 初期アカウントはadmin/adminになっている~ ** デフォルト設定の変更 [#k4874e28] 管理 -> 設定 -> 表示 -> デフォルトの言語:日本語~ 管理 -> 設定 -> 認証 -> 認証が必要にチェック~ ** LDAP認証 [#h5fa58c6] 以下の前提で設定する~ - ドメイン:prosper2.local - ADサーバ:192.168.10.231 - 情報システム部に所属するユーザのみRedmineにログイン可能 #ref(ad.png,nowrap,有効化,75%) *** ldapsearchによる事前確認 [#e1211380] したいんだけど、マルチバイトをldapsearchに引き渡すにはかなり面倒らしい。~ ので、OUはすっとばして、ユーザ名だけ取得できるか確認します。~ チェックしたいのは、下記の方です。 #ref(user.png,nowrap,有効化,75%) # ldapsearch -x -D [email protected] -w SEARCHUSERPASSWORD -h 192.168.10.231 -b "dc=prosper2,dc=local" "sAMAccountName=inshi.dento" | grep -v ^# | grep inshi.dento sAMAccountName: inshi.dento userPrincipalName: [email protected] mail: [email protected] *** redmineでの設定 [#mb1bf19e] 管理 -> LDAP認証 -> 新しい認証方式 を選択 |名称|ドメイン名| |ホスト|192.168.10.231| |ポート|389| |アカウント|検索ユーザ@ドメイン名| |パスワード|検索ユーザのパスワード| |ベースDN|OU=情報システム部,OU=本社,DC=prosper2,DC=local| |あわせてユーザを作成|チェックする| |ログインIDの属性|sAMAccountName| |名の属性|givenName| |性の属性|sn| |メールアドレスの属性|mail| 保存して、「テスト」をクリックし、上部メッセージが「接続しました」となればOK #ref(redmine.png,nowrap,有効化,75%) なんの疑いもなく日本語でDN指定してるけど、完璧に動いてる!すごい! * REST API [#ibb60758] ** cURL [#e2c5473d] https://curl.haxx.se/download.html ** チケット登録 [#nd6e6f5d] curl -v -H "Content-Type: application/json" -X POST -d '{"issue":{"project_id": 2, "subject": "インシデントの件名", "tracker_id": 1, "status_id": 1,"custom_fields":[{"id":1,"name":"通知元","value":"システム通知"},{"id":2,"name":"重要度","value":"重要"},{"id":5,"name":"ホスト名","value":"Rgateway01"},{"id":7,"name":"業務影響範囲","value":""},{"id":6,"name":"業務停止時間","value":""},{"id":3,"name":"発生日時","value":"2018/07/11 09:33:42"},{"id":9,"name":"復旧日時","value":""},{"id":8,"name":"障害レベル","value":"C"}]}}' http://<redmine>/issues.json?key=<API KEY> 以下、WindowsでもLinuxでも同じだが、Windowsは文字コードの問題で、 Internal Server Error 500 がでてしまう。 # curl -v -H "Content-Type: application/json" -d "{\"issue\":{\ \"project_id\": 2, \ \"subject\": \"APIテスト\", \ \"description\": \"ここに内容が\n入るよ。\", \ \"tracker_id\": 1, \ \"status_id\": 1,\ \"custom_fields\":[\ {\"id\":1,\"name\":\"通知元\",\"value\":\"システム通知\"},\ {\"id\":2,\"name\":\"重要度\",\"value\":\"重要\"},\ {\"id\":5,\"name\":\"ホスト名\",\"value\":\"Rgateway01\"},\ {\"id\":7,\"name\":\"業務影響範囲\",\"value\":\"\"},\ {\"id\":6,\"name\":\"業務停止時間\",\"value\":\"\"},\ {\"id\":3,\"name\":\"発生日時\",\"value\":\"2018/07/11 09:33:42\"},\ {\"id\":9,\"name\":\"復旧日時\",\"value\":\"\"},\ {\"id\":8,\"name\":\"障害レベル\",\"value\":\"C\"}\ ]}}" \ http://<redmine>/issues.json?key=<API KEY> #counter