2019年7月1日 星期一

Ansible 控制docker node

以下內容假設你已經會docker了,所以只記錄關鍵的步驟

系統配置

Docker node side
編寫Dockerfile 自動建置一個帳戶root 密碼為root , 且自動啟動ssh 的docker image
Dockerfile
FROM amd64/ubuntu:16.04
 
RUN apt-get update
RUN apt-get install -y openssh-server python-minimal
 
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
RUN echo 'root:root' | chpasswd
 
ENTRYPOINT /etc/init.d/ssh start && bash


Ansible master side
安裝ansible
sudo apt install -y ansible
在任意工作目錄放兩個設定檔案,設置ssh 連結localhost:32805 用戶為root 、密碼為root 的組態 
ansible.cfg
[defaults]
 
 
inventory = hosts
remote_user = root
host_key_checking = False
hosts
server1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=32805 ansible_ssh_pass=root
 
 
[local]
 
 
server1

啟動


啟動docker node,–name 名稱server1 對應到hosts 檔案內的server1 只是方便你辨識 ,實際上不影響
$ docker run -it --rm -p 32805:22 -d --name server1 myimage

執行task,成功的話會看到下面註解的文字
若失敗通常是ssh 的問題,確認密碼及sshd 設置
ansible all -m command -a 'echo Hello World on Docker.'
 
 
#server1 | SUCCESS | rc=0 >>
#Hello World on Docker.

未來就可以將測試程式放入container,container 只要有ssh 及python就可作為ansible的控制節點,就可以更容易地變成測試完就拋棄的環境

沒有留言:

張貼留言

NoSQL Redis intro

Redis是一個使用ANSI C編寫的開源、支援網路、基於記憶體、可選永續性的鍵值對儲存資料庫。 支援rdb 及aof 兩種儲存方式 From  https://zh.wikipedia.org/wiki/Redis Redis 目前擁有兩種資料...