Ansible

From HackerNet
Revision as of 10:48, 5 June 2015 by Sparco (talk | contribs)
Jump to: navigation, search

WIP###

“I wanted a tool that I could not use for 6 months, come back later, and still remember how it worked.” - Michael DeHaan, creator.

Ansible är ett automatiseringsverktyg som hjälper till att managera din miljö. Är det rätt verktyg för dig? http://www.infoworld.com/article/2609482/data-center/data-center-review-puppet-vs-chef-vs-ansible-vs-salt.html

Installation

Till skillnad mot t.ex. puppet finns det inga agenter/klienter utan man installerar endast på en maskin, dvs standalone.

#Ubuntu 
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

#CentOS/Fedora
sudo yum install ansible

#Alternativt
sudo pip install ansible

Inventory

I ditt inventory läggs alla maskiner till och finns default i: /etc/ansible/host

#[all]
dbsrv1
dbsrv2
websrv1
websrv2

[dbservers]
dbsrv1 ansible_ssh_host=192.0.2.11
dbsrv2 ansible_ssh_user=username

[webservers]
websrv1
websrv2

Moduler

http://docs.ansible.com/modules_by_category.html
ansible -m [modulnamn] all
ansible -m shell -a 'free -m' host1:host3

Default används SSH-nyckel för autentisering, för pw-fråga istället lägg till: -k

Playbooks

En playbook är en uppsättning instruktioner skrivna i yaml. Yaml är lättläst för oss människor.

ansible-playbook -i inventory_file dinplaybook.yml

Exempel på playbook:

- hosts: all
 tasks:
 - name: install apache2
   apt: pkg=apache state=present update_cache=true
 - name: start service
   service: name=apache2 state=started

Om man har angett hosts i playbooken behövs de inte anges när man kör kommandot. Annars kan man specificera enskilda hosts.

ansible-playbook -l host5 apache.yml

Sudo

ansible-playbook -l host5 apache.yml --ask-sudo-pass

Ladda upp filer

Man kan ladda upp lokala filer i tasken.

   - name: Upload default index.html for host
     copy: src=localfiles/index.html dest=/var/www/html/ mode=0644

YAML

Yaml använder mellanslag som delimiter, använd ej tab.
hosts:
tasks:
handlers:

Användbara exempel