Difference between revisions of "Ansible"

From wikieduonline
Jump to navigation Jump to search
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[wikipedia:Ansible (software)]] ([[2012]], [[https://trends.google.com/trends/explore?date=all&q=Ansible|Google Trends]]) is software for automate task, you can automates software provisioning, [[configuration management]], application deployment and general orchestration, ansible design is based on [[modules]], execute <code>[[ansible-doc]] -l</code> to view your available modules or check list of official modules in the documentation: https://docs.ansible.com/ansible/latest/modules/modules_by_category.html.
+
[[wikipedia:Ansible (software)]] ([[2012]], [https://trends.google.com/trends/explore?date=all&q=Ansible Google Trends]) is software for automate task, you can automates software provisioning, [[configuration management]], application deployment and general orchestration, ansible design is based on [[modules]], execute <code>[[ansible-doc]] -l</code> to view your available modules or check list of official modules in the documentation: https://docs.ansible.com/ansible/latest/modules/modules_by_category.html.
  
 
== Installation and Basic Configuration ==
 
== Installation and Basic Configuration ==
Line 21: Line 21:
 
== Configuration files ==
 
== Configuration files ==
 
There are at least two configuration files in Ansible:
 
There are at least two configuration files in Ansible:
* <code>/etc/ansible/[[hosts]]</code><ref>http://docs.ansible.com/ansible/latest/intro_inventory.html</ref>, text configuration file for managed nodes, or ''[[inventory]]'' in Ansible terminology, in [[INI]] or [[YAML]] format.
+
* <code>[[/etc/ansible/hosts]]</code><ref>http://docs.ansible.com/ansible/latest/intro_inventory.html</ref>, text configuration file for managed nodes, or ''[[inventory]]'' in Ansible terminology, in [[INI]] or [[YAML]] format.
 
* <code>/[[etc/ansible/ansible.cfg]]</code><ref>https://docs.ansible.com/ansible/latest/installation_guide/intro_configuration.html</ref><ref>https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-configuration-settings</ref> general configuration file.
 
* <code>/[[etc/ansible/ansible.cfg]]</code><ref>https://docs.ansible.com/ansible/latest/installation_guide/intro_configuration.html</ref><ref>https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-configuration-settings</ref> general configuration file.
  
Line 44: Line 44:
 
:: <code>ansible MACHINE_NAME -m shell -a COMMAND</code>
 
:: <code>ansible MACHINE_NAME -m shell -a COMMAND</code>
  
* List available modules:  
+
* List available [[Ansible modules|modules]]:  
:: <code>ansible-doc -l</code>
+
:: <code>[[ansible-doc -l]]</code>
  
 
* Execute a user defined task definition or playbook:  
 
* Execute a user defined task definition or playbook:  
Line 75: Line 75:
 
   - user:
 
   - user:
 
       name: USERNAME
 
       name: USERNAME
       shell: /bin/bash
+
       [[shell:]] /bin/bash
 
       groups: sudo  
 
       groups: sudo  
 
       append: yes
 
       append: yes
Line 121: Line 121:
 
* <code>[[ansible --help]]</code>
 
* <code>[[ansible --help]]</code>
 
* [[Ansible lookup plugins]]
 
* [[Ansible lookup plugins]]
 +
* [[Ansible variables]]: <code>[[vars:]]</code>, [[ansible_python_interpreter]]
 +
* [[unarchive]]
  
 
== See also ==
 
== See also ==

Latest revision as of 13:08, 5 February 2024

wikipedia:Ansible (software) (2012, Google Trends) is software for automate task, you can automates software provisioning, configuration management, application deployment and general orchestration, ansible design is based on modules, execute ansible-doc -l to view your available modules or check list of official modules in the documentation: https://docs.ansible.com/ansible/latest/modules/modules_by_category.html.

Installation and Basic Configuration[edit]

Install Ansible binaries using yum or apt-get depending on your linux distribution, or pip on MacOS on your computer, not necessary on your managed nodes, then allows server access to your managed clients configuring automatic ssh key authentication.

Ansible binaries:

/usr/bin/ansible
/usr/bin/ansible-playbook
/usr/bin/ansible-config                           View, edit, and manage ansible configuration.
/usr/bin/ansible-console                          REPL console for executing Ansible tasks
/usr/bin/ansible-galaxy                       Command to manage Ansible roles in shared repositories, the default of which is Ansible Galaxy https://galaxy.ansible.com
/usr/bin/ansible-pull                             Pulls playbooks from a VCS repo and executes them for the local host        
/usr/bin/ansible-doc                              Displays information on modules installed in Ansible libraries
/usr/bin/ansible-inventory                        Used to display or dump the configured inventory as Ansible sees it
/usr/bin/ansible-connection                       -
/usr/bin/ansible-vault                            Encryption/decryption utility for Ansible data files

Configuration files[edit]

There are at least two configuration files in Ansible:

Basic Ansible operations[edit]

  • Connect to remote host and verify python, it will not do a network ping to remote host, connect to host and test python:
ansible HOSTNAME -m ping (-m parameter stands for module)[5]
  • Execute "uptime" in HOSTNAME:
ansible HOSTNAME -a "uptime" (-a module arguments, in this case command to execute)
  • Connect to HOSTNAME and execute uptime command with raw module, raw module do not need python.
ansible HOSTNAME -m raw -a uptime
  • Execute "echo hello" in all your managed nodes:
ansible all -a "/bin/echo hello" (-a expect module arguments)
  • Connect and display gathered facts, do not setup anything.
ansible all -m setup
ansible all -m setup --tree out/
ansible MACHINE_NAME -m shell -a COMMAND
ansible-doc -l
  • Execute a user defined task definition or playbook:
ansible-playbook my_new_created_playbook.yml
  • Execute a user defined task definition or playbook with command line variables:
ansible-playbook my_new_created_playbook.yml -e "YOUR_USERNAME_VAR=YOUR_USERNAME_VALUE"
-e: --extra-vars as key=value or YAML/JSON

Ansible Galaxy (Roles)

Features[edit]

  • Support for saving encrypted information (passwords, API Keys ...) in playbooks using Ansible Vault (ansible-vault[6]) since 2014

Ansible tunning/configuration[edit]

Configuration of ansible is done in /etc/ansible/ansible.cfg, you can tune some configurations. Check official documentation [7] or some example configuration file.[8].

Ansible privileges[edit]

Use become[9] in your playbook and execute with --ask-become-pass parameter.

Use --ask-pass if you do not have private public key configuration.

vi create_user.yml

#!/usr/bin/env ansible-playbook --ask-become-pass

- hosts: REMOTE_SERVER
  become: yes
  tasks:

  - user:
      name: USERNAME
      shell: /bin/bash
      groups: sudo 
      append: yes
      password_lock: yes

  - authorized_key:
      user: USERNAME
      state: present
      key: "Template:Lookup('file', '/home/USERNAME/.ssh/id ed25519 USERNAME.pub')"

./create_user.yml

See also: Create a new user in a group of servers and provided ssh access using its public ssh key

Activities[edit]

Beginner:

  1. Read how to use Ansible cheatsheet: https://www.digitalocean.com/community/tutorials/how-to-use-ansible-cheat-sheet-guide
  2. Read Ansible blog: https://www.ansible.com/blog
  3. Read StackOverflow questions about Ansible: https://stackoverflow.com/questions/tagged/ansible?tab=Votes
  4. Create your first playbooks:
    1. Create a new user in a group of servers and provided ssh access using its public ssh key
    2. Configure user to be able to use sudo with no password
    3. Add a repository (apt_repository module)
    4. Use loops in task

Intermediate

  1. Install and configure sysstat using Ansible
  2. Modify Ansible configuration to reuse ssh connections
  3. Read about Ansible Roles (similar to modules in puppet and cookbooks in Chef): https://linuxacademy.com/blog/linux-academy/ansible-roles-explained/: ansible-galaxy init <ROLE_NAME>
  4. Read about Reusable Playbooks: Dynamic vs. Static and Tradeoffs and Pitfalls Between includes and imports [10]

Advanced:

  1. Increase default forks configuration variable (default configuration is 5 forks) in /etc/ansible/ansible.cfg and verify how your execution time increase or decrease. Use: [11]
  2. Use Ansible ovirt-RHV module (ovirt_vm) to create KVM virtual machines[12]
  3. Read Release Notes: Ansible changelog and versions: v2.9[13], v2.8[14], v2.7[15].
  4. Read Ansible Code: git clone https://github.com/ansible/ansible.git

Related terms[edit]

See also[edit]


Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.

Original Source: https://en.wikiversity.org/wiki/DevOps/Ansible

Advertising: