نکته ها:
برای نوشتن یک string لازم نیست حتما از ” یا ‘ استفاده کرد می توان بدون اینها نیز string را وارد کرد
برای نوشتن کامنت اول خط را با # شروع می کنیم
Playbook همیشه با — (سه تا دش ) شروع میشه
خط بعدی یک دش و یک فاصله دارد مثل شکل زیر:
یک سناریوی تستی با YAML File اینه که مثلا چک میکنیم سرویس httpd روی سرورها در وضعیت started هست یا نه، برای اینکار یه فایل با پسوند .yml درست می کنم در /home/ansible/testservice.yml
در این playbook ما تنظیم کردیم که در گروه Linuxgroup که تمامی سرورها در آن هستند سرویس httpd را چک بکند که در حالت started باشد در غیر این صورت آن سرویس را start بکند.
playbook رو هم با فرمان ansible-playbook اجرا می کنیم
ansible-playbook testservice.yml -K
یا مثلا اینکه یه فایل کپی شود در یک مسیری و داخل آن نوشته شود:
برای اینکه یک ماژول خاص رو قبل از اینکه داخل Playbook قرار بدیم تست کنیم می توانیم به شکل زیر عمل کنیم
مثلا برای تست کردن ماژول yum دو option لازم است یکی name و دیگری state که تعیین کننده حال نصب یا پاک کردن یک package است و حالت هایی که دارد:
removed, installed, absent, present,latest
ansible webservers -m yum -a “name=tree state=present” –become -K
نکته: اگر کامندی non-idempotent باشد مثل shell یعنی اینکه این کامند اگر ببیند تغییراتی که کامند جای میخواهد انجام بدهد قبلا انجام شده باز هم انجام می دهد، اما اگر idempotent باشد مثل ماژول copy اگر مثلا یک فایل قبلا کپی شده باشد دیگر آن فایل رو دوباره کپی نمی کند
سناریوی عملی
در اینجا یک فایل playbook به صورت تستی قرار داده شده که می تواند تنظیمات یک centos که به تازگی وارد شبکه شده و میخواهیم تحت کنترل ansible قرارش بدیم
hosts: web2
become: true
tasks:
name: create a User
user:
name: ansuser
password: "{{ '1234' | password_hash('sha512')}}"
name: create a folder
file:
path: /home/ansuser/.ssh/
state: directory
owner: ansuser
group: ansuser
mode: 0700
recurse: yes
name: copy files to the webservers
copy:
src: /home/ansuser/.ssh/id_rsa.pub
dest: /home/ansuser/.ssh/authorized_keys
owner: ansuser
group: ansuser
mode: 0644
name: config sudoers
lineinfile:
path: /etc/sudoers
line: 'ansuser All=(ALL) PASSWD: ALL'
insertafter: 'root ALL=(ALL) ALL'
البته بعد از تنظیم این playbook باید این کارها با یوزر root روی سیستم مقصد اجرا بشه :
ansible-playbook /home/ansuser/newuser.yml -u root -k
اگر خواستیم قبل از اینکه یک playbook اجرا بشه اون رو تست کنیم اخر دستور یه -C ( به حرف بزرگ) میزاریم
اگر هم خواستیم syntax و از درستی playbook مطمئن بشیم از فرمان زیر استفاده میکنیم
ansible-playbook --syntax-check FILENAME.yml
اگر یک playbook میخواست قدم به قدم اجرا بشه :
ansible-playbook --step newuser.yml -K