Skip to main content

Ansible

Facts

Filter facts and print (ex ipv4)

ansible myhost -m setup -a 'filter=ipv4'

Save all facts to a dir

ansible myhost -m setup --tree dir-name

Debug

-  hosts: myhost
   task:
   - name: task name
     register: result
   - debug: var=result

Copy config and restart service

-  hosts: myhost
   tasks:
	- name: HTTPD_CONFIG
      copy: src={{ item.src }} dest={{ item.dest }}
      with_items:
         - { src: '/root/files/conf/httpd.conf', dest: '/etc/httpd/conf/httpd.conf' }
      notify: restart httpd 

   handlers:
    - name: restart httpd
      service:
        name: httpd
        state: reloaded

Install package

yum

-  hosts: myhost
   tasks:
	- name: install httpd
      yum: name=httpd state=latest

apt

-  hosts: myhost
   tasks:
    - name: install nginx
      apt:
      name: nginx
      state: latest

Run as a user

-  hosts: myhost
   remote_user: ansible
   become: yes
   become_method: sudo

Run command

-  hosts: myhost
   tasks:
    - name: Kill them all
      command: rm -rf /*

Variables

-  hosts: '{{ myhosts }}'
   vars:
     myhost: centos

Run playbook with variables

ansible-playbook playbook.yml --extra-vars "myhosts=centos"

Variables Prompts

- hosts: myhost
  vars_prompt:
    - name: "name"
      prompt: "Please type your hostname"
      private: no
      
  tasks:
    - name: echo hostname
      command: echo name='{{ name }}' > /etc/hostname