Setup File Playbook etc

sebelum ke pembuatan playbook kita akan membuat config ansible dan inventory didalam folder

  1. buat folder challenge-1

mkdir -p challenge-1/

cd challenge-1/
  1. buat file ansible.cfg dengan isi file sebagai berikut

sedikit penjelasan mengenai konfigurasi berikut:

  • inventory menunjukan file inventory yang dipakai dalam hal ini kita memakai nama inventory untuk filenya

  • remote user untuk ansible login kedalam vm yang akan dijalankan task yaitu menggunakan user student.

  • ask_become_pass digunakan untuk saat user ansible menggunakan sudo atau become itu akan meminta password tergantung dari nilai booleannya true atau false jika true akan diminta

[defaults]
inventory=inventory
remote_user=student
ask_become_pass = false
  1. konfigurasi file inventory

[managed]
pod-robiansya-managed1
  1. konfigurasi playbook, buat playbook dengan nama file laravel.yaml

- name: challenge laravel
  hosts: managed
  remote_user: student
  vars:
    required_package:
      - php8.0
      - npm
      - git
      - apache2
      - php-mbstring
      - mysql-server
      - php-bcmath
    db_socket: /var/run/mysqld/mysqld.sock 
#semua pacakge harus versi 8.0 disesuaikan dengan file composer.lock
  
  tasks:
    - name: Install required packages
      apt:
        name: "{{ required_package }}"
        state: latest
      become: true

    - name: Restart MariaDB
      service: 
        name: mariadb 
        state: restarted
      become: true

    - name: create directory
      file:
        path: /var/www/laravel
        state: directory
        owner: student
        group: student
        mode: '755'
      become: true

    - name: Git clone repository
      git:
        repo: https://github.com/kunal254/laravel-8-ecommerce.git
        dest: /var/www/laravel
        force: true

    - name: Install Laravel Dependencies
      composer:
        command: install
        working_dir: /var/www/laravel

    - name: Setup database
      mysql_db:
        name: beyond
        state: present
        login_unix_socket: "{{ db_socket }}"
        login_user: robi1
        login_password: "robi123"

    - name: Set DB_DATABASE in .env
      lineinfile: 
        path: /var/www/laravel/.env 
        regexp: '^DB_DATABASE=' 
        line: 'DB_DATABASE=beyond'

    - name: Set DB_USERNAME in .env
      lineinfile: 
        path: /var/www/laravel/.env 
        regexp: '^DB_USERNAME=' 
        line: 'DB_USERNAME=robi1'

    - name: Set DB_USERNAME in .env
      lineinfile: 
        path: /var/www/laravel/.env 
        regexp: '^DB_PASSWORD=' 
        line: 'DB_PASSWORD=robi123'

    - name: Generate application key
      shell: "php artisan key:generate"
      args:
        chdir: /var/www/laravel

    - name: storage link
      shell: "php artisan storage:link"
      args:
        chdir: /var/www/laravel

    - name: Run artisan migrate
      shell: "php artisan migrate --seed"
      args:
        chdir: /var/www/laravel
      notify: restart webserver

    - name: enable rewrite
      command: a2enmod rewrite
      become: true
      notify: restart webserver

  handlers:
    - name: restart webserver
      service: 
  1. cek syntax dan jalankan playbook

ansible-playbook --syntax-check laravel.yaml

ansible-playbook laravel.yaml
  1. lihat proses berjalannya task dari playbook, pastikan tidak ada yang failed.

student@pod-robiansya-controller:~/challenge-1$ ansible-playbook laravel.yaml 

PLAY [challenge laravel] ******************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Install required packages] **********************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Restart MariaDB] ********************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [create directory] *******************************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Git clone repository] ***************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [Install Laravel Dependencies] *******************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Setup database] *********************************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Set DB_DATABASE in .env] ************************************************************************************************************************************************************************************
ok: [pod-robiansya-managed1]

TASK [Set DB_USERNAME in .env] ************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [Set DB_USERNAME in .env] ************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [Generate application key] ***********************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [storage link] ***********************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

TASK [Run artisan migrate] ****************************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

RUNNING HANDLER [restart webserver] *******************************************************************************************************************************************************************************
changed: [pod-robiansya-managed1]

PLAY RECAP ********************************************************************************************************************************************************************************************************
pod-robiansya-managed1     : ok=14   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Last updated