{"id":6916,"date":"2020-09-17T16:51:13","date_gmt":"2020-09-17T14:51:13","guid":{"rendered":"https:\/\/blog.via-internet.de\/?p=6916"},"modified":"2020-09-17T16:51:13","modified_gmt":"2020-09-17T14:51:13","slug":"ansible-getting-started","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2020\/09\/17\/ansible-getting-started\/","title":{"rendered":"Ansible | Getting Started"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install Python 3<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Install Ansible<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install ansible<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Setup virtual machines<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, we use Vagrant. But using docker is also a good choice<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create Vagrantfile<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Change IP Address and Hostname for each virtual machine<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Vagrant.configure(\"2\") do |config|\n  config.vm.box = \"hashicorp\/bionic64\"\n  config.vm.network \"public_network\", ip: \"172.16.2.191\", bridge: \"en0: Ethernet\"\n\n  config.vm.synced_folder \".\/data\", \"\/DATA\"\n  config.vm.hostname = \"host1\"\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Start virtual machine<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">vagrant up\nvagrant ssh<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configure virtual machine<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Install required programm sshpass for running ansible commands as root on target machines.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt-get install sshpass<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Setup SSH permissions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Create ssh key<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ssh-keygen -t rsa<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add <code>id_rsa_&lt;user>.pub<\/code> to virtual machines into <code>$HOME\/.ssh<\/code>\/authorized_keys<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setup config files<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">etc\/ansible\/hosts<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ansible1\nansible2\nansible3<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">etc\/ansible\/ansible.cfg<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Create Ansible configuration file in current directory with this content:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[defaults]\ninterpreter_python = auto<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible searches for configuration files in the following order, processing the first file it finds and ignoring the rest:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><code>$ANSIBLE_CONFIG<\/code>&nbsp;if the environment variable is set.<\/li><li><code>ansible.cfg<\/code>&nbsp;if it\u2019s in the current directory.<\/li><li><code>~\/.ansible.cfg<\/code>&nbsp;if it\u2019s in the user\u2019s home directory.<\/li><li><code>\/etc\/ansible\/ansible.cfg<\/code>, the default config file.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">First Test<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> ansible -i etc\/ansible\/hosts all -m ping -u vagrant<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Set default Python version on Ubuntu<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">update-alternatives --install \/usr\/bin\/python python \/usr\/bin\/python3.6 1\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Working with Playbooks<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Create simple playbook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create file <code>httpd.yaml<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">---\n- hosts: webservers\n  remote_user: ansible\n  tasks:\n  - name: Ensure apache is installed and updated\n    yum:\n      name: httpd\n      state: latest\n    become: yes<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Run playbook<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ansible-playbook -i etc\/ansible\/hosts  httpd.yaml -kK<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Allow SSH root login<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">$ sudo sed -i 's\/#PermitRootLogin prohibit-password\/PermitRootLogin yes\/' \/etc\/ssh\/sshd_config<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Installation Install Python 3 Install Ansible Setup virtual machines In this example, we use Vagrant. But using docker is also a good choice Create Vagrantfile Change IP Address and Hostname for each virtual machine Start virtual machine Configure virtual machine Install required programm sshpass for running ansible commands as root on target machines. Setup SSH permissions Create ssh key Add id_rsa_&lt;user>.pub to virtual machines into $HOME\/.ssh\/authorized_keys Setup config files etc\/ansible\/hosts etc\/ansible\/ansible.cfg Create Ansible configuration file in current directory with this content: Ansible searches for configuration files in the following order, processing the first file it finds and ignoring the rest: $ANSIBLE_CONFIG&nbsp;if [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6918,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[79],"tags":[],"class_list":["post-6916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=6916"}],"version-history":[{"count":0,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6916\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=6916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=6916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=6916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}