diff --git a/main.yaml b/main.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5b68ea955f0aed744c98fe172df6aa399ac560d4 --- /dev/null +++ b/main.yaml @@ -0,0 +1,160 @@ +--- +- name: check if packages exits + package_facts: + manager: auto + + +- name: Check whether a package called nodejs is installed + debug: + var: result + register: result + when: "'nodejs' not in ansible_facts.packages" + + +- name: 'install all the dependencies for node js if not installed.' + tags: always + become: yes + apt: + name: ['nodejs','npm'] + state: latest + install_recommends: no + update_cache: yes + +- name: make sure the latest npm is installed + tags: 'node' + become: yes + npm: + name: npm + global: yes + state: latest + +- name: install pm2 server + tags: 'pm2' + become: yes + npm: + name: pm2 + global: yes + state: latest + + +- name: install react + tags: 'react' + become: yes + npm: + name: create-react-app + global: yes + state: present + +- name: Checking folders + tags: 'volumes' + become: yes + stat: + path: "{{ item.mountpoint }}" + register: directory_stats + with_items: + - "{{ volumes }}" + +- name: Create directory + tags: 'volumes' + become: yes + file: + path: "{{ item.item.mountpoint }}" + recurse: yes + state: directory + when: item.stat.exists == false + with_items: + - "{{ directory_stats.results }}" + +- name: Mount device + tags: 'volumes' + become: yes + mount: + path: "{{ item.mountpoint }}" + src: "{{ item.device }}" + fstype: xfs + state: mounted + when: item.device is defined + with_items: + - "{{ volumes }}" + +- name: traverse into the project directory. + become: yes + shell: cd + args: + chdir: /var/lib/react + register: dir_changed + +############add logic to remove the existinf build from paretn foler + +- name: clone git repo + become: yes + git: + repo: https://github.com/advait22/react-server.git + dest: /var/lib/react + force: yes +- debug: + msg: 'git repo cloned' + when: dir_changed.rc == 0 + +- name: change working directory to the app + become: yes + shell: cd + args: + chdir: /var/lib/react/express_react_example + register: server + +- name: install all the packages for server + become: yes + npm: + path: /var/lib/react/express_react_example/ + name: install +- debug: + msg: 'inside server' + when: server.rc == 0 + +- name: change working directory to the client + become: yes + shell: cd + args: + chdir: /var/lib/react/express_react_example/client + register: client + +- name: install dependencies + become: yes + npm: + path: /var/lib/react/express_react_example/client + name: install +- debug: + msg: 'Client Dependencies installed' + when: client.rc == 0 + +- name: delete previous build folder + become: yes + shell: rm -rf + args: + chdir: /var/lib/react/express_react_example/client/build + register: build_delete + +- name : compile the new build + tags: build + become: yes + shell: npm run build + args: + chdir: /var/lib/react/express_react_example/client +- debug: + msg: 'build successfull' + # when: build_delete.rc == 0 + +- name: copy new build to parent folder + become: yes + command: mv /var/lib/react/express_react_example/client/build /var/lib/react/express_react_example + register: build_copy + + +- name: start the server + become: yes + command: pm2 start /var/lib/react/express_react_example/server.js +- debug: + msg: 'yayyyyyyyyyyy app is running' + # when: build_copy.rc == 0 + \ No newline at end of file