====== Ansible tips and tricks ======
===== Replacement in a file =====
==== Replace inplace ====
Replace inplace sshd_config param (at same position)
Ex:
#Port 22
by
Port 2222
or
Port 2233
---
- hosts: webservers
tasks:
- name: Update SSH configuration to be more secure.
lineinfile:
dest: /ansible/sshd_config
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
state: present
with_items:
- regexp: '^(.*)PasswordAuthentication (.*)$'
line: "PasswordAuthentication no"
- regexp: '^(.*)PermitRootLogin (.*)$'
line: "PermitRootLogin no"
- regexp: '^(.*)Port (.*)$'
line: "Port 2849"
==== Insert after / before ====
Use **insertafter** or **insertbefore**
tasks:
- name: add to ansible hosts file
lineinfile:
dest: /ansible/sshd_config
insertafter: '^\[ansible_ssh_host\]'
line: " test ansible_ssh_host=172.0.0.3"
==== Comment the all lines of a file ====
tasks:
- replace:
path: /ansible/sshd_config
regexp: '^(?!#)'
replace: '#'
===== Copy / backup file =====
- name: Ansible Copy using Conditional Statements
hosts: test_group
tasks:
#The env variables can be passed in:
#ex: ansible-playbook ~/playbook.yml -e "env=prod"
- name: Copy Apache config for production
copy:
src: prod_httpd.conf
dest: /etc/httpd/conf/httpd.conf
when: env == 'prod'