GitLabでPlantUML使ってみる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[GitLab]]
* 目次 [#la6e12bc]
#contents
* 動機 [#z55447e1]
GitLabを立ち上げて、ReadMeなどの閲覧でMarkDown書いて、そ...
** メリット [#kab36434]
テキストなので、diffを使った差分がわかるので以下のメリッ...
- 汎用的なツールで違いを見つけることができる。つまり、低...
- 差分だけの確認でよいので、時間の節約
- テキストなので、成果物のファイルサイズが小さくて済むの...
- gitがつかえるので、分散管理でドキュメントの消失に強い
** 注意点 [#na6258d6]
メールサーバを導入しないので以下に示す手順を実行しないと...
* volumesディレクトリの準備 [#c7b0af57]
mkdir config
mkdir logs
mkdir data
mkdir gitlab-runner-config
* 完成版、docker-compose.yaml [#qd7bc3c0]
要点:以下の文章で部分的に説明していますが、結局はこれをコ...
version: "3.9"
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
# 初回ログインに利用するrootユーザーのパスワード※...
GITLAB_ROOT_PASSWORD: "autjg267"
TZ: "Asia/Tokyo"
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab1:8929'
nginx['redirect_http_to_https'] = true
gitlab_rails['gitlab_shell_ssh_port'] = 2224
letsencrypt['enable'] = false
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:8929'
letsencrypt['enable'] = false
gitlab_rails['omniauth_enabled'] = false
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_sync_worker_cron'] = "*/5 * *...
gitlab_rails['time_zone'] = 'Asia/Tokyo'
gitlab_rails['ldap_servers'] = YAML.load <<-EOS
main:
label: 'My Ldap'
host: 'ldap-server'
port: 389
uid: 'cn'
encryption: false
verify_certificates: false
bind_dn: 'cn=admin,dc=my-company,dc=com'
password: 'admin'
# tls_options:
# ca_file: ''
# ssl_version: ''
# ciphers: ''
# cert: ''
# key: ''
active_directory: false
allow_username_or_email_login: true
# root権限ユーザでLDAPユーザが正規かどうかチ...
block_auto_created_users: false
base: 'dc=my-company,dc=com'
user_filter: ''
lowercase_usernames: true
# attributes:
# name: 'cn'
# group_base : 'ou=gitlab_groups,ou=groups,d...
# admin_group : 'gitlab_admins'
# external_groups : []
# sync_ssh_keys : false
EOS
ports:
- '8929:8929'
- '2224:22'
- '443:443'
volumes:
- './volumes/gitlab-data/config:/etc/gitlab'
- './volumes/gitlab-data/logs:/var/log/gitlab'
- './volumes/gitlab-data/data:/var/opt/gitlab'
tty: true
plantuml:
image: plantuml/plantuml-server
restart: always
ports:
- "8005:8080"
environment:
TZ: "Asia/Tokyo"
kroki:
image: 'yuzutech/kroki'
restart: always
ports:
- "8081:8000"
depends_on:
- blockdiag
- mermaid
- bpmn
- excalidraw
environment:
- TZ="Asia/Tokyo"
- KROKI_BLOCKDIAG_HOST=blockdiag
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
blockdiag:
image: yuzutech/kroki-blockdiag
restart: always
expose:
- "8001"
mermaid:
image: yuzutech/kroki-mermaid
restart: always
expose:
- "8002"
bpmn:
image: yuzutech/kroki-bpmn
restart: always
expose:
- "8003"
excalidraw:
image: yuzutech/kroki-excalidraw
restart: always
expose:
- "8004"
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
# windows
- //./pipe/docker_engine:/var/run/docker.sock
# linux
# - /var/run/docker.sock:/var/run/docker.sock
- ./gitlab-runner-config:/etc/gitlab-runner
ports:
- "8093:8093"
ldap-server:
image: osixia/openldap:latest
restart: always
container_name: ldap-server
environment:
LDAP_ORGANISATION: "My Company"
LDAP_DOMAIN: "my-company.com"
LDAP_ADMIN_PASSWORD: "admin"
LDAP_READONLY_USER: "true"
LDAP_READONLY_USER_USERNAME: "readonly"
LDAP_READONLY_USER_PASSWORD: "readonly_password"
LDAP_TLS_VERIFY_CLIENT: "never"
ports:
- "389:389"
volumes:
- ./volumes/openldap/var/lib/ldap:/var/lib/ldap
- ./volumes/openldap/etc/ldap/slapd.d:/etc/ldap/sla...
- ./openldap/testuser.ldif:/slapd/assets/custome/te...
ldap-admin:
image: osixia/phpldapadmin:latest
container_name: ldap-admin
restart: always
environment:
PHPLDAPADMIN_LDAP_HOSTS: "ldap"
PHPLDAPADMIN_HTTPS: "false"
ports:
- "8095:80"
links:
- "ldap-server:ldap"
* windowsのWSLのメモリサイズの上限を設定するシェルの例 [#...
最近のwindows11のバージョンでは、いろいろサーバを立ち上げ...
git for windowsで使う想定で、.wslconfigを修正するスクリプ...
#!/bin/bash
# 設定したいメモリのサイズ (例: 8GB)
MEMORY_SIZE="8GB"
# .wslconfigファイルのパス
WSLCONFIG_PATH="/c/Users/(自分のログインユーザのディレク...
# .wslconfigファイルが存在するか確認
if [ -f "$WSLCONFIG_PATH" ]; then
# ファイルが存在する場合、memory設定を更新
sed -i "s/^memory=.*$/memory=$MEMORY_SIZE/" $WSLCONF...
else
# ファイルが存在しない場合、新規作成してmemory設定を...
echo -e "[wsl2]\nmemory=$MEMORY_SIZE" > $WSLCONFIG_P...
fi
何がしたいのかというと単純に.wslconfigというファイル名で...
[wsl2]
memory=8GB
** Docker Desktopの再起動 [#ha0de03f]
上記のメモリの上限せっていはwindows11の特定のバージョンで...
# wslのシャットダウン
wsl --shutdown
# Docker Desktop起動
"C:\Program Files\Docker\Docker\Docker Desktop.exe" &
* GitLabをDockerをつかってインストール [#f79010c2]
公式サイトの以下のページを見る
https://docs.gitlab.com/ee/install/
インストール方法はたくさんあるが、今回はdockerを使ったや...
ローカルサーバとしてたちあげてみるだけなので、メールの認...
** dockerを利用したGitLabのインストール [#dd55d77f]
今回は、どの環境でも素早く構築できることを信じてDockerで...
https://docs.gitlab.com/ee/install/docker.html
Docker for Windows は公式にはサポートされていないようだ。...
成功事例の以下のブログ記事を参考にしてみよう。
***Windows10にDocker ComposeでGitlabを導入 [#qec795ad]
https://qiita.com/peanuts2013/items/105be140eb9826cfdb2d
*** Windows+Docker(Compose)でGitlabをローカルに立ち上げ...
https://qiita.com/beeeegle/items/b8d8da113f272f61af44
*** gitlabのDockerイメージ [#if2e5780]
https://hub.docker.com/r/gitlab/gitlab-ee/
いや、まてよコミュニティーエディションは、こっちか
https://registry.hub.docker.com/r/gitlab/gitlab-ce/
こっちがコミュニティーエディションのほうが無料のはず。ま...
*** 機能の比較 [#o6733efb]
https://about.gitlab.com/features/?stage=plan
無料で使える機能が充実している、よっぽど使い倒す気持ちが...
JIRAとも連携できるのか、ふむふむ。
* 手順 [#ye66473d]
*** 端末のIPアドレスを調べる [#dda0e021]
ipconfig -all
** hostsファイルにローカルのIPアドレスの別名を登録してお...
以下の説明では、調べたIPアドレスを以下名前でhostsファイル...
調べたIPアドレス gitlab1
保存すると、すぐに適用されるようだ
*** なぜこうするかというと、 [#c16ecb98]
- wifi接続のローカルのマシンだとIPアドレスが不安定だし、m...
- localhostを使う場合だと、他の同じwifi接続のマシンから見...
だから、IPアドレスが変更になってしまっても、最小限の修正...
** 手順2 gitlabとplantumlサーバを立ち上げる [#t99254a4]
以下のコマンドで、上記で設定したdocker-compose.ymlで設定...
docker-compose up -d
起動には数分かかる。起動中は以下のコマンドでstartingと表...
docker-compose ps
起動が完了すると
healty
という状態になる。
docker-compose.ymlのvolume:で指定したディレクトリにgitlab...
** 手順3 gitlabの設定ファイルにplantumlサーバとのリダイレ...
*** 設定を反映させる [#g97cd26c]
# 立ち上がっているdockerのコンテナ名を調べる
docker-compose ps
# コンテナに接続
docker exec -it コンテナ名 bash
gitlabからplantumlへは、gitlab内のnginxサーバのプロキシ設...
参考: https://docs.gitlab.com/ee/administration/integrati...
*** ファイル名:/etc/gitlab/gitlab.rb [#n3c30aa5]
# Docker deployment
nginx['custom_gitlab_server_config'] = "location /-/plan...
捕捉:ここで躓く人は、以下のサイトを見るといいのかもしれ...
https://qiita.com/RYO-4947123/items/cf138989eebf12e45601
# 設定を反映させる
gitlab-ctl reconfigure
** 手順4 Adminでログインできるように直接パスワードを登録...
ldapサーバを使わない場合の手順である。ほかのサービスも立...
参考:
https://e-penguiner.com/gitlab-with-docker-onpremise/
*** 立ち上がっているGitLabにbashで接続する [#vf6ede7f]
*** rubyのツールを立ち上げる [#a2f154ee]
dockerコンテナ内のbash上で以下のコマンドを打つ
gitlab-rails console -e production
※起動には数分かかります
** 手順5 ログインできるようにする。 [#n7bdc680]
gitlabのdocker版はメールサーバまでは入っていない。設定方...
数人で使う程度ならば、パスワードはgitlabに以下に示す手作...
*** rubyのインタプリタが動作するのでパスワードを設定する ...
user = User.where(id: 1).first
user.password='設定したいパスワード'
user.password_confirmation='設定したいパスワード'
user.save!
exit
*** gitの管理者でログイン [#v04d9f24]
ユーザを追加する前に、root権限でログインしておく
以下の手順で認証のメールが必要な手続きをしないようにして...
- メインメニュー [管理者]をクリック
- 設定 [全般的]をクリック
- Sign-up restrictions [Expand]をクリック
- "Require admin approval for new sign-ups"のチェックをは...
これで、ユーザ追加後にログインできるようになった。
*** rootユーザ以外の場合 [#kb0282f0]
ユーザ登録をすると、パスワードがランダムに割り振られるの...
user = User.where(id: 1).first
の数値1を適宜増やしてパスワードを直接いれて保存するのがよ...
ただし、パスワードをいれたあと、以下の設定が無いとログイ...
* GitLabでPlantUmlを使う手順 [#s5375ad8]
plantumlをgitlabで使うには、設定で有効にしないといけない
** 手順 [#qca3dc23]
Main menu の Adminをクリック
Settings の Generalをクリック
PlantUML セクションを広げる
Enable PlantUML のチェックボックスをオンにする
URLには、http://gitlab1:8005 と入れる
*** 参考:gitlabのplantuml設定を有効にする [#xccfabbb]
https://docs.gitlab.com/ee/administration/integration/pla...
* SSHキーの登録 [#g8e90abe]
参考: https://click.jp/knowledge/1476/
** 手順 [#de1f1e6b]
もし、git for windowsをインストールしていない場合はイン...
もし、まだ公開鍵がない場合は以下の手順で作る
以下の"ホームディレクトリ"は各自の環境のホームディレクト...
git for windowsのシェルでログインした直後という前提で説明...
# ホームディレクトリに移動
cd ~
mkdir .ssh
cd .ssh
ssh-keygen
あとはエンターキー
すると、ファイルが2つできる。
# 生成されたファイルを確認
ls
拡張子がpubのファイルがあったとする。
なんとか.pub
そのファイルの中身をコピペしたいので
cat なんとか.pub
とすると鍵の内容がわかるので、それをコピーする。
gitlabでプロジェクトをつくったとしたら、"ADD SSH-KEY"ボタ...
先ほどコピーしたなんとか.pubの中身を張り付ける。
これで、
git pull
や
git push
ができるようになる。
* krokiも使えるようにしてみる [#d2ff053a]
上記のplantumlの追加だけでも十分なのだが、ついでにkrokiも...
C4とかBPMNとか使ってみたい。
GitLabの設定参考URL: https://docs.gitlab.com/ee/administr...
** docker-compose.ymlに追加する [#hd36b7d8]
以下をdocker-compose.ymlに追加する。軽く説明すると、kroki...
ぐらいの意味である。
kroki:
image: 'yuzutech/kroki'
ports:
- "8081:8000"
depends_on:
- blockdiag
- mermaid
- bpmn
- excalidraw
environment:
- TZ="Asia/Tokyo"
- KROKI_BLOCKDIAG_HOST=blockdiag
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
blockdiag:
image: yuzutech/kroki-blockdiag
expose:
- "8001"
mermaid:
image: yuzutech/kroki-mermaid
expose:
- "8002"
bpmn:
image: yuzutech/kroki-bpmn
expose:
- "8003"
excalidraw:
image: yuzutech/kroki-excalidraw
expose:
- "8004"
ポートの8081が、こちらから使うポートになるので、番号が他...
*** 参考にさせていただいたURL [#h774a420]
https://www.rk-k.com/archives/4399
*** GitLabの設定 [#ad539820]
plantumlのときで出てきた設定項目の2,3個上にkrokiの設定...
サーバのアドレスをgitlab1にしていれば、以下のリンクからで...
http://gitlab1:8929/admin/application_settings/general#js...
チェックボックスをオンにする。
URLには、
http://gitlab1:8081
をいれる
* krokiの追加フォーマット扱い [#q85e1831]
公式の解説URL: https://docs.kroki.io/kroki/setup/install/...
** たとえば、BPMNを有効にしてみる [#ic6a9067]
そこには、Companion containers という欄にBPMN
が書いてあって、リンクをたどると、Dockerのページに飛ぶ。...
https://hub.docker.com/r/yuzutech/kroki-bpmn
そこには、dockerのpullコマンドが下記のように書いてあった。
docker pull yuzutech/kroki-bpmn
* LDAPサーバを使う場合の設定 [#yf454c14]
参考:
https://qiita.com/hiren/items/cba9fc6da7165c9416a0
*** DN(Distinguished Name)について [#s62a4852]
LDAPでは、各エントリ(オブジェクト)を一意に識別するため...
DNは逆順で記述され、コンマで区切られます。各コンポーネン...
- dc=example,dc=com: ドメインコンポーネント(dc)は、LDAP...
- ou=Marketing: 組織単位(ou)は、組織内の部門やグループ...
- cn=John Doe: 共通名(cn)は、エントリの一意の識別子を表...
*** baseパラメータについて [#nb7ea570]
LDAP設定のbaseパラメータに設定するDNは、ユーザー検索を開...
*** 設定を反映させる [#ne6197a6]
docker-compose exec web gitlab-ctl reconfigure
* LADPでのユーザ登録 [#d568c49b]
** ldifファイルの作成 [#g1fe564d]
LDIF(LDAP Data Interchange Format)は、LDAPエントリを表...
- dn: Distinguished Name(識別名)で、LDAPディレクトリ内...
- changetype: このエントリに対する操作のタイプを示します...
- objectClass: エントリのタイプを定義するスキーマを示しま...
- uid: ユーザーIDを示します。
- cn: 共通名を示します。通常はフルネームです。
- sn: サーネーム(姓)を示します。
- o: organization(組織)を示します。
- userPassword: ユーザーのパスワードを格納します。 {SSHA}...
* ldifの例 [#x53e4223]
mkdir openldap
cd openldap
vi testuser.ldif
** testuser.ldif [#rdbe7be2]
dn: cn=test001,dc=my-company,dc=com
givenName: test001
sn: test001
cn: test001
mail: test001@my-company.com
userPassword: dGVzdDAwMQ=a
objectClass: inetOrgPerson
objectClass: top
dn: cn=test002,dc=my-company,dc=com
givenName: test002
sn: test002
cn: test002
mail: test002@my-company.com
userPassword: dGVzdDAwMg==
objectClass: inetOrgPerson
objectClass: top
** 暗号化されたパスワードを用いる例 [#p4a2086a]
userPassword: {SSHA}wvxuaDL+/m3phJE6fyrtGU8UODCfjA2i
mail: test.user@example.co.jp
上記の {SSHA}は、パスワードがソルト付きのSHA(Secure Hash...
化されていることを示しています。
のハッシュ値を生成するには特殊なツールが必要で、例えば sl...
slappasswd -h {SSHA} -s yourpassword
このコマンドは、入力されたパスワード(この場合は yourpass...
*** gitlabの電子メールの取り扱いについて [#y3d6a25b]
LDAP 電子メール属性が GitLab ユーザー データベースに見つ...
すでに、Gitlabにユーザが登録されている場合は、電子メール...
- uid: ユーザーがサインインに使用するユーザー名にマップす...
** 追加 [#vb926d76]
上記の場合だと、
docker exec -it ldap-server bash
ldapadd -x -D "cn=admin,dc=my-company,dc=com" -w admin -...
# ldapadd -x -D "cn=Manager,dc=example,dc=co,dc=jp" -W -...
Enter LDAP Password:
adding new entry "uid=12345, ou=people, dc=example, dc=c...
** 確認 [#lb8b7d81]
# slapcat
(略)
dn: uid=12345,ou=people,dc=example,dc=co,dc=jp
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: 12345
cn: Test User
sn: user
o: people
userPassword:: e1NTSEF9d3Z4dWFETCsvbTNwaEpFNmZ5cnRHVThVT...
structuralObjectClass: inetOrgPerson
entryUUID: a88737f8-8f58-1035-832a-fbe69abdd39f
creatorsName: cn=Manager,dc=example,dc=co,dc=jp
createTimestamp: 20160405090058Z
entryCSN: 20160405090058.799276Z#000000#000#000000
modifiersName: cn=Manager,dc=example,dc=co,dc=jp
modifyTimestamp: 20160405090058Z
** 参考にしたサイト [#s5625bba]
*** OpenLDAPサーバーで、ユーザーを追加 [#e32f0f00]
https://qiita.com/gigatune/items/23439fa02488a626c3d4
*** Integrate LDAP with GitLab [#u8ce9fbb]
https://docs.gitlab.com/ee/administration/auth/ldap/?tab=...
* LDAP_INVALID_CREDENTIALS 49 [#t21b026f]
openldapのコンテナにdocker execコマンドで入って以下のコマ...
slapcat
*** 結果 [#x5907eaf]
root@87bced4a4861:/# slapcat
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Organization
dc: example
structuralObjectClass: organization
entryUUID: 62fba352-8719-103d-94d5-97c5167399a0
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20230515030735Z
entryCSN: 20230515030735.894048Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20230515030735Z
LDAPは、ログインIDだけではダメで、dcの値も入れないといけ...
*** 対策 [#scf9aae9]
docker-composeで初回に設定した内容で、設定フォルダなどが...
*** 参考になったURL [#zc27e0d1]
https://hatman62.hatenablog.com/entry/2016/06/08/230701
- docker コンテナで構築するGitlabでLDAP連携(OpenLDAP)す...
https://qiita.com/v1tam1n/items/2b780fa7fb6ae133bf8b
終了行:
[[GitLab]]
* 目次 [#la6e12bc]
#contents
* 動機 [#z55447e1]
GitLabを立ち上げて、ReadMeなどの閲覧でMarkDown書いて、そ...
** メリット [#kab36434]
テキストなので、diffを使った差分がわかるので以下のメリッ...
- 汎用的なツールで違いを見つけることができる。つまり、低...
- 差分だけの確認でよいので、時間の節約
- テキストなので、成果物のファイルサイズが小さくて済むの...
- gitがつかえるので、分散管理でドキュメントの消失に強い
** 注意点 [#na6258d6]
メールサーバを導入しないので以下に示す手順を実行しないと...
* volumesディレクトリの準備 [#c7b0af57]
mkdir config
mkdir logs
mkdir data
mkdir gitlab-runner-config
* 完成版、docker-compose.yaml [#qd7bc3c0]
要点:以下の文章で部分的に説明していますが、結局はこれをコ...
version: "3.9"
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
# 初回ログインに利用するrootユーザーのパスワード※...
GITLAB_ROOT_PASSWORD: "autjg267"
TZ: "Asia/Tokyo"
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab1:8929'
nginx['redirect_http_to_https'] = true
gitlab_rails['gitlab_shell_ssh_port'] = 2224
letsencrypt['enable'] = false
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:8929'
letsencrypt['enable'] = false
gitlab_rails['omniauth_enabled'] = false
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_sync_worker_cron'] = "*/5 * *...
gitlab_rails['time_zone'] = 'Asia/Tokyo'
gitlab_rails['ldap_servers'] = YAML.load <<-EOS
main:
label: 'My Ldap'
host: 'ldap-server'
port: 389
uid: 'cn'
encryption: false
verify_certificates: false
bind_dn: 'cn=admin,dc=my-company,dc=com'
password: 'admin'
# tls_options:
# ca_file: ''
# ssl_version: ''
# ciphers: ''
# cert: ''
# key: ''
active_directory: false
allow_username_or_email_login: true
# root権限ユーザでLDAPユーザが正規かどうかチ...
block_auto_created_users: false
base: 'dc=my-company,dc=com'
user_filter: ''
lowercase_usernames: true
# attributes:
# name: 'cn'
# group_base : 'ou=gitlab_groups,ou=groups,d...
# admin_group : 'gitlab_admins'
# external_groups : []
# sync_ssh_keys : false
EOS
ports:
- '8929:8929'
- '2224:22'
- '443:443'
volumes:
- './volumes/gitlab-data/config:/etc/gitlab'
- './volumes/gitlab-data/logs:/var/log/gitlab'
- './volumes/gitlab-data/data:/var/opt/gitlab'
tty: true
plantuml:
image: plantuml/plantuml-server
restart: always
ports:
- "8005:8080"
environment:
TZ: "Asia/Tokyo"
kroki:
image: 'yuzutech/kroki'
restart: always
ports:
- "8081:8000"
depends_on:
- blockdiag
- mermaid
- bpmn
- excalidraw
environment:
- TZ="Asia/Tokyo"
- KROKI_BLOCKDIAG_HOST=blockdiag
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
blockdiag:
image: yuzutech/kroki-blockdiag
restart: always
expose:
- "8001"
mermaid:
image: yuzutech/kroki-mermaid
restart: always
expose:
- "8002"
bpmn:
image: yuzutech/kroki-bpmn
restart: always
expose:
- "8003"
excalidraw:
image: yuzutech/kroki-excalidraw
restart: always
expose:
- "8004"
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
# windows
- //./pipe/docker_engine:/var/run/docker.sock
# linux
# - /var/run/docker.sock:/var/run/docker.sock
- ./gitlab-runner-config:/etc/gitlab-runner
ports:
- "8093:8093"
ldap-server:
image: osixia/openldap:latest
restart: always
container_name: ldap-server
environment:
LDAP_ORGANISATION: "My Company"
LDAP_DOMAIN: "my-company.com"
LDAP_ADMIN_PASSWORD: "admin"
LDAP_READONLY_USER: "true"
LDAP_READONLY_USER_USERNAME: "readonly"
LDAP_READONLY_USER_PASSWORD: "readonly_password"
LDAP_TLS_VERIFY_CLIENT: "never"
ports:
- "389:389"
volumes:
- ./volumes/openldap/var/lib/ldap:/var/lib/ldap
- ./volumes/openldap/etc/ldap/slapd.d:/etc/ldap/sla...
- ./openldap/testuser.ldif:/slapd/assets/custome/te...
ldap-admin:
image: osixia/phpldapadmin:latest
container_name: ldap-admin
restart: always
environment:
PHPLDAPADMIN_LDAP_HOSTS: "ldap"
PHPLDAPADMIN_HTTPS: "false"
ports:
- "8095:80"
links:
- "ldap-server:ldap"
* windowsのWSLのメモリサイズの上限を設定するシェルの例 [#...
最近のwindows11のバージョンでは、いろいろサーバを立ち上げ...
git for windowsで使う想定で、.wslconfigを修正するスクリプ...
#!/bin/bash
# 設定したいメモリのサイズ (例: 8GB)
MEMORY_SIZE="8GB"
# .wslconfigファイルのパス
WSLCONFIG_PATH="/c/Users/(自分のログインユーザのディレク...
# .wslconfigファイルが存在するか確認
if [ -f "$WSLCONFIG_PATH" ]; then
# ファイルが存在する場合、memory設定を更新
sed -i "s/^memory=.*$/memory=$MEMORY_SIZE/" $WSLCONF...
else
# ファイルが存在しない場合、新規作成してmemory設定を...
echo -e "[wsl2]\nmemory=$MEMORY_SIZE" > $WSLCONFIG_P...
fi
何がしたいのかというと単純に.wslconfigというファイル名で...
[wsl2]
memory=8GB
** Docker Desktopの再起動 [#ha0de03f]
上記のメモリの上限せっていはwindows11の特定のバージョンで...
# wslのシャットダウン
wsl --shutdown
# Docker Desktop起動
"C:\Program Files\Docker\Docker\Docker Desktop.exe" &
* GitLabをDockerをつかってインストール [#f79010c2]
公式サイトの以下のページを見る
https://docs.gitlab.com/ee/install/
インストール方法はたくさんあるが、今回はdockerを使ったや...
ローカルサーバとしてたちあげてみるだけなので、メールの認...
** dockerを利用したGitLabのインストール [#dd55d77f]
今回は、どの環境でも素早く構築できることを信じてDockerで...
https://docs.gitlab.com/ee/install/docker.html
Docker for Windows は公式にはサポートされていないようだ。...
成功事例の以下のブログ記事を参考にしてみよう。
***Windows10にDocker ComposeでGitlabを導入 [#qec795ad]
https://qiita.com/peanuts2013/items/105be140eb9826cfdb2d
*** Windows+Docker(Compose)でGitlabをローカルに立ち上げ...
https://qiita.com/beeeegle/items/b8d8da113f272f61af44
*** gitlabのDockerイメージ [#if2e5780]
https://hub.docker.com/r/gitlab/gitlab-ee/
いや、まてよコミュニティーエディションは、こっちか
https://registry.hub.docker.com/r/gitlab/gitlab-ce/
こっちがコミュニティーエディションのほうが無料のはず。ま...
*** 機能の比較 [#o6733efb]
https://about.gitlab.com/features/?stage=plan
無料で使える機能が充実している、よっぽど使い倒す気持ちが...
JIRAとも連携できるのか、ふむふむ。
* 手順 [#ye66473d]
*** 端末のIPアドレスを調べる [#dda0e021]
ipconfig -all
** hostsファイルにローカルのIPアドレスの別名を登録してお...
以下の説明では、調べたIPアドレスを以下名前でhostsファイル...
調べたIPアドレス gitlab1
保存すると、すぐに適用されるようだ
*** なぜこうするかというと、 [#c16ecb98]
- wifi接続のローカルのマシンだとIPアドレスが不安定だし、m...
- localhostを使う場合だと、他の同じwifi接続のマシンから見...
だから、IPアドレスが変更になってしまっても、最小限の修正...
** 手順2 gitlabとplantumlサーバを立ち上げる [#t99254a4]
以下のコマンドで、上記で設定したdocker-compose.ymlで設定...
docker-compose up -d
起動には数分かかる。起動中は以下のコマンドでstartingと表...
docker-compose ps
起動が完了すると
healty
という状態になる。
docker-compose.ymlのvolume:で指定したディレクトリにgitlab...
** 手順3 gitlabの設定ファイルにplantumlサーバとのリダイレ...
*** 設定を反映させる [#g97cd26c]
# 立ち上がっているdockerのコンテナ名を調べる
docker-compose ps
# コンテナに接続
docker exec -it コンテナ名 bash
gitlabからplantumlへは、gitlab内のnginxサーバのプロキシ設...
参考: https://docs.gitlab.com/ee/administration/integrati...
*** ファイル名:/etc/gitlab/gitlab.rb [#n3c30aa5]
# Docker deployment
nginx['custom_gitlab_server_config'] = "location /-/plan...
捕捉:ここで躓く人は、以下のサイトを見るといいのかもしれ...
https://qiita.com/RYO-4947123/items/cf138989eebf12e45601
# 設定を反映させる
gitlab-ctl reconfigure
** 手順4 Adminでログインできるように直接パスワードを登録...
ldapサーバを使わない場合の手順である。ほかのサービスも立...
参考:
https://e-penguiner.com/gitlab-with-docker-onpremise/
*** 立ち上がっているGitLabにbashで接続する [#vf6ede7f]
*** rubyのツールを立ち上げる [#a2f154ee]
dockerコンテナ内のbash上で以下のコマンドを打つ
gitlab-rails console -e production
※起動には数分かかります
** 手順5 ログインできるようにする。 [#n7bdc680]
gitlabのdocker版はメールサーバまでは入っていない。設定方...
数人で使う程度ならば、パスワードはgitlabに以下に示す手作...
*** rubyのインタプリタが動作するのでパスワードを設定する ...
user = User.where(id: 1).first
user.password='設定したいパスワード'
user.password_confirmation='設定したいパスワード'
user.save!
exit
*** gitの管理者でログイン [#v04d9f24]
ユーザを追加する前に、root権限でログインしておく
以下の手順で認証のメールが必要な手続きをしないようにして...
- メインメニュー [管理者]をクリック
- 設定 [全般的]をクリック
- Sign-up restrictions [Expand]をクリック
- "Require admin approval for new sign-ups"のチェックをは...
これで、ユーザ追加後にログインできるようになった。
*** rootユーザ以外の場合 [#kb0282f0]
ユーザ登録をすると、パスワードがランダムに割り振られるの...
user = User.where(id: 1).first
の数値1を適宜増やしてパスワードを直接いれて保存するのがよ...
ただし、パスワードをいれたあと、以下の設定が無いとログイ...
* GitLabでPlantUmlを使う手順 [#s5375ad8]
plantumlをgitlabで使うには、設定で有効にしないといけない
** 手順 [#qca3dc23]
Main menu の Adminをクリック
Settings の Generalをクリック
PlantUML セクションを広げる
Enable PlantUML のチェックボックスをオンにする
URLには、http://gitlab1:8005 と入れる
*** 参考:gitlabのplantuml設定を有効にする [#xccfabbb]
https://docs.gitlab.com/ee/administration/integration/pla...
* SSHキーの登録 [#g8e90abe]
参考: https://click.jp/knowledge/1476/
** 手順 [#de1f1e6b]
もし、git for windowsをインストールしていない場合はイン...
もし、まだ公開鍵がない場合は以下の手順で作る
以下の"ホームディレクトリ"は各自の環境のホームディレクト...
git for windowsのシェルでログインした直後という前提で説明...
# ホームディレクトリに移動
cd ~
mkdir .ssh
cd .ssh
ssh-keygen
あとはエンターキー
すると、ファイルが2つできる。
# 生成されたファイルを確認
ls
拡張子がpubのファイルがあったとする。
なんとか.pub
そのファイルの中身をコピペしたいので
cat なんとか.pub
とすると鍵の内容がわかるので、それをコピーする。
gitlabでプロジェクトをつくったとしたら、"ADD SSH-KEY"ボタ...
先ほどコピーしたなんとか.pubの中身を張り付ける。
これで、
git pull
や
git push
ができるようになる。
* krokiも使えるようにしてみる [#d2ff053a]
上記のplantumlの追加だけでも十分なのだが、ついでにkrokiも...
C4とかBPMNとか使ってみたい。
GitLabの設定参考URL: https://docs.gitlab.com/ee/administr...
** docker-compose.ymlに追加する [#hd36b7d8]
以下をdocker-compose.ymlに追加する。軽く説明すると、kroki...
ぐらいの意味である。
kroki:
image: 'yuzutech/kroki'
ports:
- "8081:8000"
depends_on:
- blockdiag
- mermaid
- bpmn
- excalidraw
environment:
- TZ="Asia/Tokyo"
- KROKI_BLOCKDIAG_HOST=blockdiag
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
blockdiag:
image: yuzutech/kroki-blockdiag
expose:
- "8001"
mermaid:
image: yuzutech/kroki-mermaid
expose:
- "8002"
bpmn:
image: yuzutech/kroki-bpmn
expose:
- "8003"
excalidraw:
image: yuzutech/kroki-excalidraw
expose:
- "8004"
ポートの8081が、こちらから使うポートになるので、番号が他...
*** 参考にさせていただいたURL [#h774a420]
https://www.rk-k.com/archives/4399
*** GitLabの設定 [#ad539820]
plantumlのときで出てきた設定項目の2,3個上にkrokiの設定...
サーバのアドレスをgitlab1にしていれば、以下のリンクからで...
http://gitlab1:8929/admin/application_settings/general#js...
チェックボックスをオンにする。
URLには、
http://gitlab1:8081
をいれる
* krokiの追加フォーマット扱い [#q85e1831]
公式の解説URL: https://docs.kroki.io/kroki/setup/install/...
** たとえば、BPMNを有効にしてみる [#ic6a9067]
そこには、Companion containers という欄にBPMN
が書いてあって、リンクをたどると、Dockerのページに飛ぶ。...
https://hub.docker.com/r/yuzutech/kroki-bpmn
そこには、dockerのpullコマンドが下記のように書いてあった。
docker pull yuzutech/kroki-bpmn
* LDAPサーバを使う場合の設定 [#yf454c14]
参考:
https://qiita.com/hiren/items/cba9fc6da7165c9416a0
*** DN(Distinguished Name)について [#s62a4852]
LDAPでは、各エントリ(オブジェクト)を一意に識別するため...
DNは逆順で記述され、コンマで区切られます。各コンポーネン...
- dc=example,dc=com: ドメインコンポーネント(dc)は、LDAP...
- ou=Marketing: 組織単位(ou)は、組織内の部門やグループ...
- cn=John Doe: 共通名(cn)は、エントリの一意の識別子を表...
*** baseパラメータについて [#nb7ea570]
LDAP設定のbaseパラメータに設定するDNは、ユーザー検索を開...
*** 設定を反映させる [#ne6197a6]
docker-compose exec web gitlab-ctl reconfigure
* LADPでのユーザ登録 [#d568c49b]
** ldifファイルの作成 [#g1fe564d]
LDIF(LDAP Data Interchange Format)は、LDAPエントリを表...
- dn: Distinguished Name(識別名)で、LDAPディレクトリ内...
- changetype: このエントリに対する操作のタイプを示します...
- objectClass: エントリのタイプを定義するスキーマを示しま...
- uid: ユーザーIDを示します。
- cn: 共通名を示します。通常はフルネームです。
- sn: サーネーム(姓)を示します。
- o: organization(組織)を示します。
- userPassword: ユーザーのパスワードを格納します。 {SSHA}...
* ldifの例 [#x53e4223]
mkdir openldap
cd openldap
vi testuser.ldif
** testuser.ldif [#rdbe7be2]
dn: cn=test001,dc=my-company,dc=com
givenName: test001
sn: test001
cn: test001
mail: test001@my-company.com
userPassword: dGVzdDAwMQ=a
objectClass: inetOrgPerson
objectClass: top
dn: cn=test002,dc=my-company,dc=com
givenName: test002
sn: test002
cn: test002
mail: test002@my-company.com
userPassword: dGVzdDAwMg==
objectClass: inetOrgPerson
objectClass: top
** 暗号化されたパスワードを用いる例 [#p4a2086a]
userPassword: {SSHA}wvxuaDL+/m3phJE6fyrtGU8UODCfjA2i
mail: test.user@example.co.jp
上記の {SSHA}は、パスワードがソルト付きのSHA(Secure Hash...
化されていることを示しています。
のハッシュ値を生成するには特殊なツールが必要で、例えば sl...
slappasswd -h {SSHA} -s yourpassword
このコマンドは、入力されたパスワード(この場合は yourpass...
*** gitlabの電子メールの取り扱いについて [#y3d6a25b]
LDAP 電子メール属性が GitLab ユーザー データベースに見つ...
すでに、Gitlabにユーザが登録されている場合は、電子メール...
- uid: ユーザーがサインインに使用するユーザー名にマップす...
** 追加 [#vb926d76]
上記の場合だと、
docker exec -it ldap-server bash
ldapadd -x -D "cn=admin,dc=my-company,dc=com" -w admin -...
# ldapadd -x -D "cn=Manager,dc=example,dc=co,dc=jp" -W -...
Enter LDAP Password:
adding new entry "uid=12345, ou=people, dc=example, dc=c...
** 確認 [#lb8b7d81]
# slapcat
(略)
dn: uid=12345,ou=people,dc=example,dc=co,dc=jp
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: 12345
cn: Test User
sn: user
o: people
userPassword:: e1NTSEF9d3Z4dWFETCsvbTNwaEpFNmZ5cnRHVThVT...
structuralObjectClass: inetOrgPerson
entryUUID: a88737f8-8f58-1035-832a-fbe69abdd39f
creatorsName: cn=Manager,dc=example,dc=co,dc=jp
createTimestamp: 20160405090058Z
entryCSN: 20160405090058.799276Z#000000#000#000000
modifiersName: cn=Manager,dc=example,dc=co,dc=jp
modifyTimestamp: 20160405090058Z
** 参考にしたサイト [#s5625bba]
*** OpenLDAPサーバーで、ユーザーを追加 [#e32f0f00]
https://qiita.com/gigatune/items/23439fa02488a626c3d4
*** Integrate LDAP with GitLab [#u8ce9fbb]
https://docs.gitlab.com/ee/administration/auth/ldap/?tab=...
* LDAP_INVALID_CREDENTIALS 49 [#t21b026f]
openldapのコンテナにdocker execコマンドで入って以下のコマ...
slapcat
*** 結果 [#x5907eaf]
root@87bced4a4861:/# slapcat
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Organization
dc: example
structuralObjectClass: organization
entryUUID: 62fba352-8719-103d-94d5-97c5167399a0
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20230515030735Z
entryCSN: 20230515030735.894048Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20230515030735Z
LDAPは、ログインIDだけではダメで、dcの値も入れないといけ...
*** 対策 [#scf9aae9]
docker-composeで初回に設定した内容で、設定フォルダなどが...
*** 参考になったURL [#zc27e0d1]
https://hatman62.hatenablog.com/entry/2016/06/08/230701
- docker コンテナで構築するGitlabでLDAP連携(OpenLDAP)す...
https://qiita.com/v1tam1n/items/2b780fa7fb6ae133bf8b
ページ名: