Ansible Automation


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Ansible Automation

Hi Gurus,

I am new to ansible automation, kindly suggest me whether i am going in right path.

I Want to automate deployment of apache,mysql-server on multiple Linux hosts.

ansible version i am using ansible 1.5.4
OS: Ubuntu 14.04.5 LTS

below is the Script created for the same

Code:
---
- hosts: all
  tasks:
    - name: "Install Softwares Apache,Mysql-server,Php,Php-gd,php5-mysql"
      apt: name={{ item }} update_cache=yes state=latest
      with_items:
      - apache2
      - mysql-server
      - php5-mysql
      - php5
      - php5-gd
    - name: "Restart Apache"
      service: name=apache2 state=restarted
      notify:
      - reload apache2
    - name: "start Mysql"
      service: name=mysql state=started
      notify:
      - start mysql
    - name: "Os Distro with <= 5"
      when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' and ansible_lsb.major_release|int <= 5
      apt: name={{ item }} update_cache=yes state=latest
      with_items:
      - php-devel
      - pecl
      - jason
    - name: "Identify Json Configuration Files"
      stat: path=/etc/php.d/json.ini
      register: JSON_CONFIG
    - name: "Modify File"
      lineinfile: dest=/etc/php.d/json.ini line="# Json Extension"
      lineinfile: dest=/etc/php.d/json.ini line="extension=json.so"
      when: JSON_CONFIG == true
      register: MOD_JSON_FL
    - name: "Restart Apache"
      service: name=apache2 state=restarted
      when: MOD_JSON_FL == true
      notify:
      - reload apache2
  handlers:
    - name: reload apache2
      service: name=apache2 state=reloaded
    - name: start mysql
      service: name=mysql state=started


Regard's
Venkatesh K
# 2  
Hi, try the playbook against Test machine first so you can see if there is any issues.
# 3  
Hi Corleone,

Thanks for the Reply, I tried and it was working as per our requirements on Ubuntu.

Code:
---
- hosts: linux
  tasks:
    - name: "Install Softwares Apache,Mysql-server,Php,Php-gd,php5-mysql"
      apt: name={{ item }} update_cache=yes state=latest
      with_items:
      - apache2
      - mysql-server
      - python-mysqldb
      - php5-mysql
      - php5-mcrypt
      - php5-curl
      - php5
      - php5-gd
    - name: "Restart Apache"
      service: name=apache2 state=started
      notify:
      - reload apache2
    - name: "start Mysql"
      service: name=mysql state=started
      notify:
      - start mysql
    - name: "Os Distro with <= 5"
      when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' and ansible_lsb.major_release|int <= 5
      apt: name={{ item }} update_cache=yes state=latest
      with_items:
      - php-devel
      - perl
      - jason
    - name: "Modify File jason config file"
      lineinfile:
         dest: /etc/php.d/json.ini
         line: "{{item}}"
      with_items:
      - "# Json Extension"
      - "extension=json.so"
      when: ansible_lsb.major_release|int <= 5
      register: MOD_JSON_FL
    - name: "Restart Apache"
      service: name=apache2 state=restarted
      when: MOD_JSON_FL == true
      notify:
      - reload apache2
    - name: "Create Demo Data Base"
      mysql_db: login_user=root login_password=root name=demo12 state=present collation=utf8_general_ci
    - name: "Create Demo User"
      mysql_user: login_user=root login_password=root name=demo12 password=root priv=*.*:ALL,GRANT host=localhost state=present
    - name: "Restart My Sql Service"
      service: name=mysql state=restarted
    - name: "Download Xibo 1.7.7 Version "
      get_url:
        url: "https://github.com/xibosignage/xibo-cms/archive/1.7.7.tar.gz"
        dest: /var/www/html/xibo_1.7.7.tar.gz
    - name: "Unarchive Xibo Tarball "
      ignore_errors: yes
      command: "{{item}}"
      with_items:
      - tar zxvf /var/www/html/xibo_1.7.7.tar.gz -C /var/www/html/
      - mv /var/www/html/xibo-cms-1.7.7/ /var/www/html/xibo/
    - name: "Change Permissions"
      ignore_errors: yes
      file: path=/var/www/html/xibo/ owner=www-data group=www-data
    - name: "Creating the Media library and Manipulating the Permissions"
      ignore_errors: yes
      file: path=/var/www/html/xibo-library owner=www-data group=www-data mode=0755 state=directory
    - name: "Remove tar dump"
      ignore_errors: yes
      file: path=/var/www/html/xibo_1.7.7.tar.gz state=absent
    - name: "Check Config file /etc/php5/apache2/php.ini"
      stat: path=/etc/php5/apache2/php.ini
      register: PH_Ini_Sts
    - name: "Making Changes to Max Upload File Size,post_max_size,upload_max_size,max_execution_time in /etc/php5/apache2/php.ini"
      replace: dest=/etc/php5/apache2/php.ini
          regexp="{{item.regexp}}"
          replace="{{item.line}}"
      with_items:
      - { regexp: "^(.*)max_input_time(.*)$", line: 'max_input_time = 5000' }
      - { regexp: "^(.*)memory_limit(.*)$", line: 'memory_limit = 1000M' }
      - { regexp: "^(.*)max_execution_time(.*)$", line: 'max_execution_time = 5000' }
      - { regexp: "^(.*)post_max_size(.*)$", line: 'post_max_size = 750M' }
      - { regexp: "^(.*)upload_max_filesize(.*)$", line: 'upload_max_filesize = 750M' }
      when: PH_Ini_Sts == true
    - name: "Adding Localhost entry in /etc/apache2/apache2.conf"
      lineinfile: dest=/etc/apache2/apache2.conf line="ServerName localhost"
    - name: "Run PHPenmode COmmand"
      command: php5enmod mcrypt
    - name: "White Labelling"
      ignore_errors: yes
      copy: src="{{item}}" dest=/var/www/html/xibo/theme/default/img/ backup=yes owner=www-data
      with_items:
      - ~/xibologo.png
      - ~/favicon.ico
    - name: "Replacing Xibo with VENKAT in /var/www/html/xibo/theme/default/config.php"
      replace: dest=/var/www/html/xibo/theme/default/config.php
         regexp="{{item.regexp}}"
         replace="{{item.line}}"
      with_items:
      - { regexp: "^(.*)theme_title(.*)$", line: "              'theme_title' => 'VENKAT Digital Signage'," }
      - { regexp: "^(.*)app_name(.*)$", line: "         'app_name' => 'VENKAT'," }
    - name: "Restart Apache"
      service: name=apache2 state=restarted
  handlers:
    - name: reload apache2
      service: name=apache2 state=reloaded
    - name: start mysql
      service: name=mysql state=started
    - name: FIL_COPY
      command: ls
  #If Proxy needed
  #environment:
  #   http:

# 4  
Cool, pretty good playbook. I am implementing Ansible in our environment so lets keep posting our notes as someone might find it useful.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. Linux

Ansible installation fails on standalone Oracle Linux

I have a standalone Oracle Linux server which has no connectivity to the internet. I was following a blog which directed me to download all ansible dependent setup files and install them using the below command. # yum localinstall -y python-crypto-2.6.1-1.el7.rf.x86_64.rpm... (7 Replies)
Discussion started by: mohtashims
7 Replies

2. Shell Programming and Scripting

Useradd with ansible

Hello, I need ansible playbook to create new user on remote server. Remote server blocked direct root login so I must login first application user and later I must run "useradd" command with sudo. I need playbook.yml and cli command. Best regards, (0 Replies)
Discussion started by: getrue
0 Replies

3. UNIX and Linux Applications

Passing variables from UNIX to Ansible to UNIX shell

I m passing a variable stringg from Unix shell which has value 'Good Day' to ansible and from ansible to a second shell script where it print only Good instead of 'Good Day' passing the variable stringg from unix shell script1.sh echo $stringg ansible-playbook install.yml -i... (1 Reply)
Discussion started by: mohtashims
1 Replies

4. Shell Programming and Scripting

Small automation

Frequently we need to stop or start services on Linux systems. For exmaple : To start or stop vsftpd daemon # /etc/init.d/vsftpd start or # /etc/init.d/vsftpd stop Following script will check the vsftpd service and if it is running, it will be stopped or vice-versa. # cat... (5 Replies)
Discussion started by: snjksh
5 Replies

5. Shell Programming and Scripting

Script Automation

Hi Gurus, I have a clearcase script that i use to check in a single file at time on my clearcase server. the script is as follows setmyview settask 75098_MSI_TRILOGY_EIM cd /vobs/Trilogy_R12/custom/msieim/12.0.0/sql/ cleartool co -nc . ct mkelem -nc Filename_1.sql cp... (3 Replies)
Discussion started by: r_t_1601
3 Replies

6. Shell Programming and Scripting

automation using python

Im trying to write an automation script using python. I expect this script to log in to a remote server, execute commands and get its output. import pexpect child=pexpect.spawn('ssh myuser@192.168.151.80') child.expect('Password:') child.sendline('mypassword') get_output =... (4 Replies)
Discussion started by: Arun_Linux
4 Replies

7. UNIX for Advanced & Expert Users

Need help in automation

Hi, I wanted to automate the scp command where i do not want to enter the password each time. So thought of using expect command. Script is executing without any issues but files are not copied to remote server. Can any one help me? Below is my shell script.. #!/bin/ksh ... (6 Replies)
Discussion started by: balasubramani04
6 Replies

8. Shell Programming and Scripting

scp automation

hi there , i want to use the scp to transfer the file from one machine to another machine non-stop. i have put it in a .sh file. but everytime i run it and it prompts me to input password. pc3@pc3-desktop:~/Documents$ ./sample3.sh pc-main@192.168.1.117's password: screenshot.jpg ... (4 Replies)
Discussion started by: Ericyue
4 Replies

9. Shell Programming and Scripting

Automation of UI using shellscript

Hi, I want to do automation on UI using shellscript. eg: 1) Drop down menu contains assign , investigate, closed. now there is one id want assign it using assign tab then need to investigate it and lastly close. Sometimes the id can't assign to perticular user. there are so many... (11 Replies)
Discussion started by: aish11
11 Replies

10. Shell Programming and Scripting

Help in automation...

Hi All, I need to run the same command on many servers. I am using ssh for the same. Following is the script that I am using to fire the same command on multiple machines. #!/bin/bash # Linux/UNIX box with ssh key based login #SERVERS="iqmevrick,iqmango" # SSH User name USR="root" #... (1 Reply)
Discussion started by: nua7
1 Replies

Featured Tech Videos