[student@workstation lab-roles]$ ansible-galaxy init --offline -p roles student.myenv
- student.myenv was created successfully
[student@workstation lab-roles]$ ansible-galaxy init --offline -p roles myapache
- myapache was created successfully

[student@workstation lab-roles]$ tree
.
├── ansible.cfg
├── apache_httpdconf.j2
├── apache_indexhtml.j2
├── inventory
├── mkcd.sh.j2
└── roles
    ├── myapache
    │   ├── README.md
    │   ├── defaults
    │   │   └── main.yml
    │   ├── files
    │   ├── handlers
    │   │   └── main.yml
    │   ├── meta
    │   │   └── main.yml
    │   ├── tasks
    │   │   └── main.yml
    │   ├── templates
    │   ├── tests
    │   │   ├── inventory
    │   │   └── test.yml
    │   └── vars
    │       └── main.yml
    └── student.myenv
        ├── README.md
        ├── defaults
        │   └── main.yml
        ├── files
        ├── handlers
        │   └── main.yml
        ├── meta
        │   └── main.yml
        ├── tasks
        │   └── main.yml
        ├── templates
        ├── tests
        │   ├── inventory
        │   └── test.yml
        └── vars
            └── main.yml


[student@workstation lab-roles]$ mv mkcd.sh.j2 roles/student.myenv/templates/
[student@workstation lab-roles]$ cp /usr/share/icons/hicolor/48x48/apps/system-logo-icon.png roles/student.myenv/files/profile.png



[student@workstation lab-roles]$ vi roles/student.myenv/tasks/main.yml
[student@workstation lab-roles]$ cat roles/student.myenv/tasks/main.yml
---
# tasks file for student.myenv

- name: check myenv_user default
  fail:
    msg: You must specify the variale 'myenv_user' to use this role!
  when: "myenv_user == ''"

- name: install my packages
  yum:
    name: "{{ item }}"
    state: installed
  with_items: "{{ myenv_packages }}"

- name: copy placeholder profile pic
  copy:
    src: profile.png
    dest: "~{{ myenv_user }}/profile.png"

- name: set an alias in '.bashrc'
  copy:
    src: profile.png
    dest: "~{{ myenv_user }}/.bashrc"

- name: template out mkcd function
  template:
    src: mkcd.sh.j2
    dest: /etc/profile.d/mkcd.sh
    owner: root
    group: root
    mode: 0644



[student@workstation lab-roles]$ vi roles/student.myenv/vars/main.yml 
[student@workstation lab-roles]$ cat roles/student.myenv/vars/main.yml
---
# vars file for student.myenv

myenv_packages:
  - 'git'
  - 'tree'
  - 'vim-enhanced'



[student@workstation lab-roles]$ vi roles/student.myenv/defaults/main.yml 
[student@workstation lab-roles]$ cat roles/student.myenv/defaults/main.yml
---
# defaults file for student.myenv

myenv_user: ''


[student@workstation lab-roles]$ vi myenv.yml
[student@workstation lab-roles]$ cat roles/student.myenv/defaults/main.yml
---
# defaults file for student.myenv

myenv_user: ''
[student@workstation lab-roles]$ cat myenv.yml 
---
- name: setup my personal environment
  hosts: all
  roles:
    - student.myenv


[student@workstation lab-roles]$ ansible-playbook myenv.yml 

PLAY [setup my personal environment] ******************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [serverb.lab.example.com]
ok: [serverc.lab.example.com]

TASK [student.myenv : check myenv_user default] *******************************************************************************************************************************************************************
fatal: [serverb.lab.example.com]: FAILED! => {"changed": false, "failed": true, "msg": "You must specify the variale 'myenv_user' to use this role!"}
fatal: [serverc.lab.example.com]: FAILED! => {"changed": false, "failed": true, "msg": "You must specify the variale 'myenv_user' to use this role!"}
    to retry, use: --limit @/home/student/lab-roles/myenv.retry

PLAY RECAP ********************************************************************************************************************************************************************************************************
serverb.lab.example.com    : ok=1    changed=0    unreachable=0    failed=1   
serverc.lab.example.com    : ok=1    changed=0    unreachable=0    failed=1   



[student@workstation lab-roles]$ 
[student@workstation lab-roles]$ vi myenv.yml
---
# defaults file for student.myenv

myenv_user: ''
[student@workstation lab-roles]$ cat myenv.yml 
---
- name: setup my personal environment
  hosts: all
  roles:
    - role: student.myenv
      myenv_user: student


[student@workstation lab-roles]$ ansible-playbook myenv.yml 

PLAY [setup my personal environment] ******************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [serverb.lab.example.com]
ok: [serverc.lab.example.com]

TASK [student.myenv : check myenv_user default] *******************************************************************************************************************************************************************
skipping: [serverb.lab.example.com]
skipping: [serverc.lab.example.com]

TASK [student.myenv : install my packages] ************************************************************************************************************************************************************************
changed: [serverc.lab.example.com] => (item=[u'git', u'tree', u'vim-enhanced'])
changed: [serverb.lab.example.com] => (item=[u'git', u'tree', u'vim-enhanced'])

TASK [student.myenv : copy placeholder profile pic] ***************************************************************************************************************************************************************
changed: [serverc.lab.example.com]
changed: [serverb.lab.example.com]

TASK [student.myenv : set an alias in '.bashrc'] ******************************************************************************************************************************************************************
changed: [serverc.lab.example.com]
changed: [serverb.lab.example.com]

TASK [student.myenv : template out mkcd function] *****************************************************************************************************************************************************************
changed: [serverb.lab.example.com]
changed: [serverc.lab.example.com]

PLAY RECAP ********************************************************************************************************************************************************************************************************
serverb.lab.example.com    : ok=5    changed=4    unreachable=0    failed=0   
serverc.lab.example.com    : ok=5    changed=4    unreachable=0    failed=0   

     
[student@workstation lab-roles]$ mv apache_*.j2 roles/myapache/templates/
[student@workstation lab-roles]$ tree roles/myapache/templates/
roles/myapache/templates/
├── apache_httpdconf.j2
└── apache_indexhtml.j2

0 directories, 2 files
[student@workstation lab-roles]$ vi roles/myapache/handlers/main.yml 
[student@workstation lab-roles]$ cat roles/myapache/handlers/main.yml 
---
# handlers file for myapache
- name: restart apache
  service:
    name: httpd
    state: restarted

[student@workstation lab-roles]$ vi roles/myapache/tasks/main.yml 
[student@workstation lab-roles]$ cat roles/myapache/tasks/main.yml 
---
# tasks file for myapache
- name: install apache package
  yum:
    name: httpd
    state: latest

- name: install firewalld package
  yum:
    name: firewalld
    state: latest

- name: template out apache configuration file
  template:
    src: apache_httpdconf.j2
    dest: /etc/httpd/conf/httpd.conf
    owner: root
    group: root
    mode: 0444
  notify:
    - restart apache
  when: apache_enable

- name: template out apache index.html
  template:
    src: apache_indexhtml.j2
    dest: /var/www/html/index.html
    owner: root
    group: root
    mode: 0444
  when: apache_enable

- name: start and enable apache daemon
  service:
    name: httpd
    state: started
    enabled: true
  when: apache_enable

- name: start and enble firewalld daemon
  service:
    name: firewalld
    state: started
    enabled: true
  when: apache_enable

- name: open http firewall port
  firewalld:
    port: 80/tcp
    immediate: true
    permanent: true
    state: enabled
  when: apache_enable

[student@workstation lab-roles]$ vi roles/myapache/defaults/main.yml 
[student@workstation lab-roles]$ cat roles/myapache/defaults/main.yml 
---
# defaults file for myapache
apache_enable: false
[student@workstation lab-roles]$ vi apache.yml
[student@workstation lab-roles]$ cat apache.yml 
---
- name: setup apache on serverb.lab.example.com
  hosts: serverb.lab.example.com
  roles:
    - myapache
[student@workstation lab-roles]$ 

[student@workstation lab-roles]$ ansible-playbook apache.yml 

PLAY [setup apache on serverb.lab.example.com] ********************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [serverb.lab.example.com]

TASK [myapache : install apache package] **************************************************************************************************************************************************************************
ok: [serverb.lab.example.com]

TASK [myapache : install firewalld package] ***********************************************************************************************************************************************************************
ok: [serverb.lab.example.com]

TASK [myapache : template out apache configuration file] **********************************************************************************************************************************************************
skipping: [serverb.lab.example.com]

TASK [myapache : template out apache index.html] ******************************************************************************************************************************************************************
skipping: [serverb.lab.example.com]

TASK [myapache : start and enable apache daemon] ******************************************************************************************************************************************************************
skipping: [serverb.lab.example.com]

TASK [myapache : start and enble firewalld daemon] ****************************************************************************************************************************************************************
skipping: [serverb.lab.example.com]

TASK [myapache : open http firewall port] *************************************************************************************************************************************************************************
skipping: [serverb.lab.example.com]

PLAY RECAP ********************************************************************************************************************************************************************************************************
serverb.lab.example.com    : ok=3    changed=0    unreachable=0    failed=0   

[student@workstation lab-roles]$ 
[student@workstation lab-roles]$ 
[student@workstation lab-roles]$ vi apache.yml 
[student@workstation lab-roles]$ cat apache.yml 
---
- name: setup apache on serverb.lab.example.com
  hosts: serverb.lab.example.com
  roles:
    - role: myapache
      apache_enable: true


[student@workstation lab-roles]$ ansible-playbook apache.yml 

[student@workstation lab-roles]$ curl -s http://serverb.lab.example.com
<!-- Ansible managed -->
<h2>Apache is running!</h2>

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.