Dalam rencana ini, saya berubah angin sedikit, daripada AWS S3 ke Postgres database. Lebih khusus lagi, postgres table.
Saya akan menggunakan postgresql_table_module untuk cipta table yang baru dalam database. Kod adalah seperti berikut
---
- name: Workshop Playbook
hosts: ayam
connection: local
vars:
postgres_rds_info:
- db_host: "test.workshop.com"
database_name: "test_db"
vars_prompt:
- name: input_username
prompt: Enter the ADMIN USERNAME
private: false
default: "master_user"
- name: input_password
prompt: Enter the ADMIN PASSWORD
tasks:
- name: Print Show Password
ansible.builtin.debug:
msg: "{{input_password}}"
- name: Create a table public.ansible_workshop_table
postgresql_table:
name: "public.ansible_workshop_table"
columns:
- load_date timestamp
- id varchar(50)
- name varchar(200)
- is_income boolean
- created_at timestamp
- updated_at timestamp
- dt varchar(50)
login_host: "{{ item.db_host }}"
login_user: "{{input_username}}"
port: 5432
login_password: "{{input_password}}"
db: "{{ item.database_name }}"
state: present
with_items: '{{ postgres_rds_info }}'
Ada beberapa perkara baru yang saya perkenalkan dalam kod ini. Iaitu
vars
vars_prompt
ansible.builtin.debug
postgresql_table
vars
Digunakan jika anda ingin mewujudkan variable dalam ansible-playbook anda. Jadi tidak perlu lagi secara manual memasukkan value dalams setiap task. Dan jika anda perubahan (contohnya SIT ke PROD) hanya perlu ubah pada satu tempat.
vars_prompt
Sama seperti vars, cuma kali ini anda boleh meminta input daripada user.
name: input_username # nama variable anda
prompt: Enter the ADMIN USERNAME # Arahan input kepada user
private: false # jika anda set false input akan ditunjukkan pada skrin, dan jika true input tidak akan ditunjukkan
default: "master_user" # anda boleh set default value di sini
ansible.builtin.debug
Digunakan jika anda ingin debug/display nilai pada variable tersebut.
postgresql_table
- name: Create a table public.ansible_workshop_table
postgresql_table:
name: "public.ansible_workshop_table"
columns:
- load_date timestamp
- id varchar(50)
- name varchar(200)
- is_income boolean
- created_at timestamp
- updated_at timestamp
- dt varchar(50)
login_host: "{{ item.db_host }}"
login_user: "{{input_username}}"
port: 5432
login_password: "{{input_password}}"
db: "{{ item.database_name }}"
state: present
with_items: '{{ postgres_rds_info }}'
Dalam kod ini saya create sebuah table yang bernama public.ansible_workshop_table . Columns yang digunakan adalah sama seperti SQL.
db, login_host, login_password dan login_user adalah maklum untuk login.
Dan seperti biasa state: present merujuk kepada anda ingin create table tersebut.
with_items anda boleh rujuk kepada rencana di bawah ini untuk lebih lanjut
Ansible Playbook: Loops dengan with_items
Jika rencana yang lepas kita menyentuh mengenai S3 bucket (rujuk rencana di bawah) Hari ini kita kembangkan lagi ansible playbook kita ini dengan loops menggunakan with_items. Bayangkan anda perlu membuat 5 S3 bucket berbeza untuk setiap department/jabatan. Anda boleh buat begini:
Selamat mencuba !!!
Jika anda tersangkut. Comment di post ini. Nanti saya cuba bantu.