- playbook.yml //จะเป็น file หลักที่จะมีการ สร้าง droplet หรือ จัดการ resource ต่างๆ
- variables.json // ที่ๆ เราประกาศตัวแปร ไว้ใช้ ใน main.tf
- inventory // ตามชื่อเลย อารมณ์ประมาณเป็นคลัง เก็บ config ต่างๆ เช่น host ,server ,group ,...
[dev]
server ansible_host=192.xxx
[prod]
server ansible_host=xxx
โดยที่
[dev]
,[prod]
เป็นการประกาศ ตัวแปร สำหรับ ระบุใน playbook เช่นว่า ถ้าเลือก host: [dev] เป็นอะไร ก็จะเอาของ server ที่อยู่ ภายใต้ตัวแปร dev ก็คือ server ansible_host=192.xxxโดย สามารถเขียน
inventory
เป็น แบบ ไฟล์yaml
ได้เช่นกัน
variables.json
ในนี้จะเป็นการ ประกาศ config
ที่สำคัญจำพวก ข้อมูลภายใน server
ที่ทำจะทำการเข้าไป ติดตั้ง แบบไม่ผูกติดกับ
ไฟล์ playbook.yml
( ใน playbook.yml จะเป็นการประกาศตัวแปรตั้งไว้ ลอยๆแล้วรับค่าตัวแปรจาก variables.json นี้แหละ )
{
"container_name": "<docker_name>",
"container_image": "<docker_images>",
"container_images_port" : "<port_default ใน images นั้นๆ>",
"container_port" : "<port ที่จะให้แสดงออกมา>"
}
- hosts: dev
become: true
vars_files: # จะเป็นการนำตัวแปรที่ใส่ค่าไว้มาใช้
- variables.json
tasks:
- name: Pull default Docker image
docker_image:
name: "{{container_image}}"
source: pull
- name: Create default containers
docker_container:
name: "{{container_name}}"
image: "{{container_image}}"
state: started
recreate: yes
ports: "{{ container__port }}:{{ container_images_port }}"
$ ansible-playbook playbook.yml \
-i inventory \
--private-key app.key
ที่เพิ่มเติมมาก็คือ –private-key app.key ก็คือ private key ที่จะเข้าไปยัง server ปลายทาง
$ ssh-keygen
$ ssh-copy-id -i <public_key ที่ได้> <user>@<ip ปลายทาง>
แล้ว เก็บ private key ไว้เข้าไป