0% found this document useful (0 votes)
299 views2 pages

Ansible Cheat Sheet

This document provides an overview of Ansible including: 1. It describes Ansible as a tool for continuous deployment, configuration management, and automation. 2. It outlines some common Ansible commands like using Ansible to run ad-hoc commands, transfer files, manage packages and services, and deploy from source control. 3. It provides an example playbook and discusses writing playbooks and inventory files to manage hosts and groups of hosts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
299 views2 pages

Ansible Cheat Sheet

This document provides an overview of Ansible including: 1. It describes Ansible as a tool for continuous deployment, configuration management, and automation. 2. It outlines some common Ansible commands like using Ansible to run ad-hoc commands, transfer files, manage packages and services, and deploy from source control. 3. It provides an example playbook and discusses writing playbooks and inventory files to manage hosts and groups of hosts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Ansible Cheat Sheet

What is Ansible? Ad-Hoc Commands

Ansible is a continuous deployment and configuration tool which provides Ad-Hoc commands are quick commands which are used to perform the actions, that won’t be saved for later.
large productivity gains to a wide variety of automation challenges. Parallelism & Shell Commands
#To set up SSH agent $ ssh-agent bash $ ssh-add ~/.ssh/id_rsa
#To use SSH with a password instead of keys, you can use --ask-pass (-K)
$ ansible europe -a "/sbin/reboot" -f 20
#To run /usr/bin/ansible from a user account, not the root
$ ansible europe -a "/usr/bin/foo" -u username
#To run commands through privilege escalation and not through user account
$ ansible europe -a "/usr/bin/foo" -u username --become [--ask-become-pass]
Ansible Architecture #If you are using password less method then use --ask-become-pass (-K) to interactively get the password to be use #You
can become a user, other than root by using --become-user
$ ansible europe -a "/usr/bin/foo" -u username --become --become-user otheruser [--ask-become-pass]

File Transfer
#Transfer a file directly to many servers
$ ansible europe -m copy -a "src=/etc/hosts dest=/tmp/hosts"
#To change the ownership and permissions on files $ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600" $
ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=example group=example"
#To create directories $ ansible webservers -m file -a "dest=/path/to/c mode=755 owner=example group=example
state=directory“
#To delete directories (recursively) and delete files
$ ansible webservers -m file -a "dest=/path/to/c state=absent

Manage Packages Manage Services


#To ensure that a package is installed, but doesn’t get #To ensure a service is started on all web servers $ ansible
updated webservers -m service -a "name=httpd state=started"
$ ansible webservers -m apt -a "name=acme #To restart a service on all web servers
SSH Key Generation & Install Ansible state=present" $ ansible webservers -m service -a "name=httpd
#To ensure that a package is installed to a specific state=restarted"
SSH Key Generation version #To ensure a service is stopped $ ansible webservers -m
$ ansible webservers -m apt -a "name=acme-1.5 service -a "name=httpd state=stopped
Ansible uses SSH to communicate between the nodes. state=present"
#Setting Up SSH Command $ sudo apt-get install openssh-server #To ensure that a package at the latest version
#Generating SSH Key $ ssh-keygen $ ansible webservers -m apt -a "name=acme state=latest"
#Copy the SSH Key on the Hosts $ ssh-copy-id hostname
#To ensure that a package is not installed
#Check the SSH Connection $ ssh <nodeName> $ ansible webservers -m apt -a "name=acme state=absent

Install Ansible Deploying from Source Control


To install Ansible in Debian Linux, follow the following steps: #GitRep:https://foo.example.org/repo.git #Destination:/src/myapp
#Add Ansible repository $ sudo apt-add-repository $ ansible webservers -m git -a "repo=https://foo.example.org/repo.git dest=/src/myapp version=HEAD"
ppa:ansible/ansible
#Run the update command $ sudo apt-get update
#Install Ansible package $ sudo apt-get install ansible
#Check Ansible Version $ ansible –version
Ansible Cheat Sheet
Playbooks Inventory Files & Hosts Patterns

Sample Playbooks Ansible’s inventory lists all the platforms you want to automate across. Ansible can at a single instance work on multiple hosts in
#Every YAML file starts with --- the infrastructure.
---
Setup & Hosts Connection
- hosts: webservers vars: http_port: 80 max_clients: 200 remote_user:
root
Follow the below steps to set hosts and then check their connection.
tasks: # Set up hosts by editing the hosts' file in the Ansible directory
-name: ensure apache is at the latest version $ sudo nano /etc/ansible/hosts #To check the connection to hosts
apt: name=httpd state=latest -name: write the apache config file #First change the directory to /etc/Ansible
template: src=/https/www.scribd.com/srv/httpd.j2 dest=/etc/httpd.conf notify: - $ cd /etc/ansible
#To check whether Ansible is connecting to hosts, use ping command $ ansible –m ping <hosts>
-restart apache
-name: ensure apache is running (and enable it at boot) #To check on servers individually
service: name=httpd state=started enabled=yes handlers: $ ansible -m ping server name
-name: restart apache #To check a particular server group
service: name=httpd state=restarted $ ansible -m ping servergroupname

Writing Playbooks Example Inventory File


#Generate the SSH Key and connect hosts to control machine before ungrouped.example.com #An ungrouped host
writing and running playbooks. #Create a Playbook [webservers] #A group called webservers
$ vi <name of your file>.yml beta.example.com ansible_host = 10.0.0.5 #ssh to 10.0.0.5
#To write the playbook refer to the snapshot here. #Run the playbook github.example.com ansible_ssh_user = abc #ssh as user abc
$ ansible-playbook <name of your file>.yml [clouds]
cloud.example.com fileuser = alice #fileuser is a host variable
[moscow]
beta.example.com #Host (DNS will resolve)
telecom.example.com #Host(DNS will resolve)
[dev1:children] #dev1 is a group containing
webservers #All hosts in group webservers
clouds #All hosts in group clouds

Ansible Hosts Patterns


all All hosts in inventory

* All hosts in inventory

ungrouped All hosts in inventory not appearing within a group

10.0.0.* All hosts with an IP starting 10.0.0.*

webservers The group webservers

webservers:!moscow Only hosts in webservers, not also in group moscow

webservers:&moscow Only hosts in the group’s webservers and moscow

You might also like