Ansibleでdocker使用可能ユーザーを一挙に作成する
概要
dockerをインストールした直後は、root以外のユーザーはdocker
コマンドを管理者権限sudo
付きでないと使用できない。
これを構成管理ツールAnsibleによって、root以外のユーザーでもsudo
なしでdocker
コマンドを実行できるよう自動設定する。
背景
docker上で色々動かすプロトタイプなマシンサーバーをAnsibleで構成管理したい。
ところが、単にdockerを入れただけでは、docker
コマンドを実行時に面倒な事が起こる。
具体的には、sudo
付きでdocker
コマンドを実行したり、rootユーザーになったりしなければならない。
そこで、Ansibleでこれも自動設定もしてしまいたいと考えた。
具体と解説
動作検証環境
- python version:2.7.15
- ansible-playbook:2.6.3
- ホストOS:CentOS 7.5.1804
ディレクトリ構造
再利用できるよう、タスクはユーザー設定とdocker関係設定に分割してロール内に記述しました。
ansible/
├ hosts/
├ roles/
│ ├ docker/
│ │ ├ files/
│ │ │ └ docker.repo
│ │ └ tasks/
│ │ └ main.yml
│ └ user/
│ └ tasks/
│ └ main.yml
└ site.yml
各ファイルの中身
dockerはyumでインストールすることとします。
また、ホストOSはCentOSを想定しています。
(掲題の件の部分に関しては、他の大半のLinux OSでも同様のソースで動作するかと思います。)
- name: Yum update packages
yum:
name: "*"
state: latest
- name: Set docker repo
copy:
src: "{{ role_path }}/files/docker.repo"
dest: /etc/yum.repos.d/docker.repo
owner: root
group: root
mode: 0755
- name: Install docker
yum:
name: docker-engine
state: present
- name: docker setting mkdir
file:
path: /etc/systemd/system/docker.service.d
state: directory
owner: root
group: root
mode: 0755
- name: Add to docker group
user:
name: "{{ item }}"
groups: docker
append: yes
with_items: "{{ docker_users }}"
- name: Start docker
systemd:
name: docker
state: started
enabled: yes
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
roles/docker/tasks/main.yml
内の Add to docker group
というタスクで、実行したいユーザー群docker_users
をdocker
グループへ入れます。
これによって、docker_users
に登録されているユーザーは、sudo
なしでdocker
コマンドを実行できるようになります。
docker_users
は、Ansibleの実行ファイルsite.yml
等で変数として設定します。
- hosts: all
user: user1
become: true
vars:
docker_users:
- user1
- user2
roles:
- role: user
- role: docker
docker
実行したいユーザー群のユーザーアカウントが存在しておく必要があるため、タスクdocker
の実行前にタスクuser
にてユーザー作成を行います。
- name: Add users
user:
name: "{{ item }}"
with_items: "{{ docker_users }}"
ファイルhosts
には、ホストサーバー(デプロイ先の)アドレスを記述します。
127.0.0.1
127.0.0.2
127.0.0.3
実行
$ ansible-playbook -i hosts site.yml
実行は、ホスト側でsudo
が利用可能な環境で。
上記は、ゲストにおいて秘密鍵をssh-agent
で登録している場合で、
そうでない場合は、--private-key
など適切なオプションをつけて実行ください。
Author And Source
この問題について(Ansibleでdocker使用可能ユーザーを一挙に作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/KentoDodo/items/bbc10b430e5e905146fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .