chrisluiz16

DOCKER + GIT modified

Jun 30th, 2023
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 16.20 KB | None | 0 0
  1.  
  2. ###---------------------------------- Task 1 Flask application -----------------------###
  3.  
  4.  
  5. ---
  6.  
  7. - name: "Docker image build"
  8.   hosts: build
  9.   become: true
  10.   vars:
  11.     packages:
  12.      - docker
  13.       - git
  14.     git_url: https://github.com/Chris-luiz-16/Hello-world-flask-app-with-systemd-file.git
  15.     clone_dest: /var/flaskapp
  16.     docker_name: chrisluiz16/flaskappdocker
  17.   vars_files:
  18.    - passwd.vars
  19.   tasks:
  20.     - name: "Install required packages for docker build"
  21.       yum:
  22.         name: "{{ packages }}"
  23.         state: present
  24.     - name: "Adding a secondary user docker for the user ec2-user"
  25.       user:
  26.         name: ec2-user
  27.         groups: docker
  28.         append: true
  29.     - name: "Starng/enabibling the docker service"
  30.       service:
  31.         name: docker
  32.         state: started
  33.         enabled: true
  34.     - name: "git cloning the Flask application"
  35.       git:
  36.         repo: "{{ git_url }}"
  37.         dest: "{{ clone_dest }}"
  38.       register: git_status
  39.     - name: "Printing the git commit id's"
  40.       debug:
  41.         var: git_status
  42.     - name: "Login to the dockerhub"
  43.       when: git_status.changed == true
  44.       docker_login:
  45.         username: "{{ docker_user }}"
  46.         password: "{{ docker_passwd }}"
  47.     - name: "Docker image build from Docker file"
  48.       when: git_status.changed == true
  49.       community.docker.docker_image:
  50.         name: "{{ docker_name }}"
  51.         source: build
  52.         build:
  53.           path: "{{ clone_dest }}"
  54.           pull: true
  55.         tag: "{{ item }}"
  56.         push: true
  57.         force_tag: true
  58.         force_source: true
  59.       with_items:
  60.        - latest
  61.         - "{{ git_status.after }}"
  62.       register: build_status
  63.  
  64.     - name: "Deleting the local image build"
  65.       when: git_status.changed == true
  66.       community.docker.docker_image:
  67.         name: "{{ docker_name }}"
  68.         tag: "{{ item }}"
  69.         state: absent
  70.       with_items:
  71.        - latest
  72.         - "{{ git_status.after }}"
  73.     - name: "Logout docker hub"
  74.       when: git_status.changed == true
  75.       docker_login:
  76.         username: "{{ docker_user }}"
  77.         password: "{{ docker_passwd }}"
  78.         state: absent
  79.  
  80. - name: "Running a flaskapp container"
  81.   hosts: test
  82.   become: true
  83.   vars:
  84.     packages:
  85.      - python3-pip
  86.       - docker
  87.     git_url: https://github.com/Chris-luiz-16/Hello-world-flask-app-with-systemd-file.git
  88.     clone_dest: /var/flaskapp
  89.     docker_name: chrisluiz16/flaskappdocker
  90.   tasks:
  91.     - name: "Installing required packages for the flaskapp docker container"
  92.       yum:
  93.         name: "{{ packages }}"
  94.         state: present
  95.     - name: "Adding docker as a secondary user in ec2-user"
  96.       user:
  97.         name: ec2-user
  98.         groups: docker
  99.         append: true
  100.     - name: " Starting & enable docker service"
  101.       service:
  102.         name: docker
  103.         state: started
  104.         enabled: true
  105.     - name: "Pulling the docker image to the test server"
  106.       community.docker.docker_image:
  107.         name: "{{ docker_name }}"
  108.         source: pull
  109.         force_source: true
  110.       register: image_status
  111.     - name: "Creating a container in test server"
  112.       when: image_status.changed == true
  113.       docker_container:
  114.         name: flaskctr
  115.         image: "{{ docker_name }}"
  116.         recreate: true
  117.         restart_policy: always
  118.         published_ports: 5000:5000
  119.  
  120.  
  121.        
  122.  
  123.  
  124. #### Output ####
  125.  
  126. [ec2-user@ip-172-31-12-92 ~]$ ansible-playbook -i hosts main.yml --vault-password-file=secret.sh
  127.  
  128. PLAY [Docker image build] **********************************************************************************************************************************
  129.  
  130. TASK [Gathering Facts] *************************************************************************************************************************************
  131. ok: [172.31.13.244]
  132.  
  133. TASK [Install required packages for docker build] **********************************************************************************************************
  134. ok: [172.31.13.244]
  135.  
  136. TASK [Adding a secondary user docker for the user ec2-user] ************************************************************************************************
  137. ok: [172.31.13.244]
  138.  
  139. TASK [Starng/enabibling the docker service] ****************************************************************************************************************
  140. ok: [172.31.13.244]
  141.  
  142. TASK [git cloning the Flask application] *******************************************************************************************************************
  143. changed: [172.31.13.244]
  144.  
  145. TASK [Printing the git commit id's] ************************************************************************************************************************
  146. ok: [172.31.13.244] => {
  147.     "git_status": {
  148.         "after": "3cb7d7d72286a2b2558e496240143fbe16d21a26",
  149.         "before": "9912d65954c0822fee7ea674fa87faefada99f76",
  150.         "changed": true,
  151.         "failed": false,
  152.         "remote_url_changed": false
  153.     }
  154. }
  155.  
  156. TASK [Login to the dockerhub] ******************************************************************************************************************************
  157. changed: [172.31.13.244]
  158.  
  159. TASK [Docker image build from Docker file] *****************************************************************************************************************
  160. changed: [172.31.13.244] => (item=latest)
  161. ok: [172.31.13.244] => (item=3cb7d7d72286a2b2558e496240143fbe16d21a26)
  162.  
  163. TASK [Deleting the local image build] **********************************************************************************************************************
  164. changed: [172.31.13.244] => (item=latest)
  165. changed: [172.31.13.244] => (item=3cb7d7d72286a2b2558e496240143fbe16d21a26)
  166.  
  167. TASK [Logout docker hub] ***********************************************************************************************************************************
  168. changed: [172.31.13.244]
  169.  
  170. PLAY [Running a flaskapp container] ************************************************************************************************************************
  171.  
  172. TASK [Gathering Facts] *************************************************************************************************************************************
  173. ok: [172.31.5.16]
  174.  
  175. TASK [Installing required packages for the flaskapp docker container] **************************************************************************************
  176. ok: [172.31.5.16]
  177.  
  178. TASK [Adding docker as a secondary user in ec2-user] *******************************************************************************************************
  179. ok: [172.31.5.16]
  180.  
  181. TASK [Starting & enable docker service] ********************************************************************************************************************
  182. ok: [172.31.5.16]
  183.  
  184. TASK [Pulling the docker image to the test server] *********************************************************************************************************
  185. changed: [172.31.5.16]
  186.  
  187. TASK [Creating a container in test server] *****************************************************************************************************************
  188. changed: [172.31.5.16]
  189.  
  190. PLAY RECAP *************************************************************************************************************************************************
  191. 172.31.13.244              : ok=10   changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  192. 172.31.5.16                : ok=6    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  193.  
  194.  
  195.  
  196.  
  197.  
  198. ###---------------------------------- Task 2 nodejs application ---------------###
  199.  
  200.  
  201. ---
  202.  
  203. - name: "Docker image build"
  204.   hosts: build
  205.   become: true
  206.   vars:
  207.     packages:
  208.      - docker
  209.       - git
  210.     git_url: https://github.com/Chris-luiz-16/Simple-Nodejs-Hello-world-Docker-image-and-container-build.git
  211.     clone_dest: /var/nodejs
  212.     docker_name: chrisluiz16/nodejs
  213.   vars_files:
  214.    - passwd.vars
  215.   tasks:
  216.     - name: "Install required packages for docker build"
  217.       yum:
  218.         name: "{{ packages }}"
  219.         state: present
  220.     - name: "Adding a secondary user docker for the user ec2-user"
  221.       user:
  222.         name: ec2-user
  223.         groups: docker
  224.         append: true
  225.     - name: "Starng/enabibling the docker service"
  226.       service:
  227.         name: docker
  228.         state: started
  229.         enabled: true
  230.     - name: "git cloning the nodejs application"
  231.       git:
  232.         repo: "{{ git_url }}"
  233.         dest: "{{ clone_dest }}"
  234.       register: git_status
  235.     - name: "Printing the git commit id's"
  236.       debug:
  237.         var: git_status
  238.     - name: "Login to the dockerhub"
  239.       when: git_status.changed == true
  240.       docker_login:
  241.         username: "{{ docker_user }}"
  242.         password: "{{ docker_passwd }}"
  243.     - name: "Docker image build from Docker file"
  244.       when: git_status.changed == true
  245.       community.docker.docker_image:
  246.         name: "{{ docker_name }}"
  247.         source: build
  248.         build:
  249.           path: "{{ clone_dest }}"
  250.           pull: true
  251.         tag: "{{ item }}"
  252.         push: true
  253.         force_tag: true
  254.         force_source: true
  255.       with_items:
  256.        - latest
  257.         - "{{ git_status.after }}"
  258.       register: build_status
  259.  
  260.     - name: "Deleting the local image build"
  261.       when: git_status.changed == true
  262.       community.docker.docker_image:
  263.         name: "{{ docker_name }}"
  264.         tag: "{{ item }}"
  265.         state: absent
  266.       with_items:
  267.        - latest
  268.         - "{{ git_status.after }}"
  269.     - name: "Logout docker hub"
  270.       when: git_status.changed == true
  271.       docker_login:
  272.         username: "{{ docker_user }}"
  273.         password: "{{ docker_passwd }}"
  274.         state: absent
  275.  
  276. - name: "Running a nodejs container in test server"
  277.   hosts: test
  278.   become: true
  279.   vars:
  280.     packages: docker
  281.     git_url: https://github.com/Chris-luiz-16/Simple-Nodejs-Hello-world-Docker-image-and-container-build.git
  282.     clone_dest: /var/flaskapp
  283.     docker_name: chrisluiz16/nodejs
  284.   tasks:
  285.     - name: "Installing required packages for the nodejs docker container"
  286.       yum:
  287.         name: "{{ packages }}"
  288.         state: present
  289.     - name: "Adding docker as a secondary user in ec2-user"
  290.       user:
  291.         name: ec2-user
  292.         groups: docker
  293.         append: true
  294.     - name: " Starting & enable docker service"
  295.       service:
  296.         name: docker
  297.         state: started
  298.         enabled: true
  299.     - name: "Pulling the docker image to the test server"
  300.       community.docker.docker_image:
  301.         name: "{{ docker_name }}"
  302.         source: pull
  303.         force_source: true
  304.       register: image_status
  305.     - name: "Creating a node js container in test server"
  306.       when: image_status.changed == true
  307.       docker_container:
  308.         name: nodejsctr
  309.         image: "{{ docker_name }}"
  310.         recreate: true
  311.         restart_policy: always
  312.         published_ports: 3000:3000
  313.     - name: "Remove tangling image if any"
  314.       when: image_status.changed == true
  315.       community.docker.docker_prune:
  316.         images: true
  317.         images_filters:
  318.           dangling: true
  319.  
  320.        
  321.  
  322.        
  323. #### Output ####
  324.  
  325. [ec2-user@ip-172-31-12-92 ~]$ ansible-playbook -i hosts nodejs.yml --vault-password-file=secret.sh
  326.  
  327. PLAY [Docker image build] **********************************************************************************************************************************
  328.  
  329. TASK [Gathering Facts] *************************************************************************************************************************************
  330.  
  331. ok: [172.31.13.244]
  332.  
  333. TASK [Install required packages for docker build] **********************************************************************************************************
  334. ok: [172.31.13.244]
  335.  
  336. TASK [Adding a secondary user docker for the user ec2-user] ************************************************************************************************
  337. ok: [172.31.13.244]
  338.  
  339. TASK [Starng/enabibling the docker service] ****************************************************************************************************************
  340. ok: [172.31.13.244]
  341.  
  342. TASK [git cloning the nodejs application] ******************************************************************************************************************
  343. changed: [172.31.13.244]
  344.  
  345. TASK [Printing the git commit id's] ************************************************************************************************************************
  346. ok: [172.31.13.244] => {
  347.     "git_status": {
  348.         "after": "31a3756964e5c14b77c39b8b258d38846c2b7295",
  349.         "before": "a2d9e3d95e6cee555477214ba7e336a1c451a427",
  350.         "changed": true,
  351.         "failed": false,
  352.         "remote_url_changed": false
  353.     }
  354. }
  355.  
  356. TASK [Login to the dockerhub] ******************************************************************************************************************************
  357. changed: [172.31.13.244]
  358.  
  359. TASK [Docker image build from Docker file] *****************************************************************************************************************
  360. changed: [172.31.13.244] => (item=latest)
  361. ok: [172.31.13.244] => (item=31a3756964e5c14b77c39b8b258d38846c2b7295)
  362.  
  363. TASK [Deleting the local image build] **********************************************************************************************************************
  364. changed: [172.31.13.244] => (item=latest)
  365. changed: [172.31.13.244] => (item=31a3756964e5c14b77c39b8b258d38846c2b7295)
  366.  
  367. TASK [Logout docker hub] ***********************************************************************************************************************************
  368. changed: [172.31.13.244]
  369.  
  370. PLAY [Running a nodejs container in test server] ***********************************************************************************************************
  371.  
  372. TASK [Gathering Facts] *************************************************************************************************************************************
  373.  
  374. ok: [172.31.5.16]
  375.  
  376. TASK [Installing required packages for the nodejs docker container] ****************************************************************************************
  377. ok: [172.31.5.16]
  378.  
  379. TASK [Adding docker as a secondary user in ec2-user] *******************************************************************************************************
  380. ok: [172.31.5.16]
  381.  
  382. TASK [Starting & enable docker service] ********************************************************************************************************************
  383. ok: [172.31.5.16]
  384.  
  385. TASK [Pulling the docker image to the test server] *********************************************************************************************************
  386. changed: [172.31.5.16]
  387.  
  388. TASK [Creating a node js container in test server] *********************************************************************************************************
  389. changed: [172.31.5.16]
  390.  
  391. TASK [Remove tangling image if any] ************************************************************************************************************************
  392. changed: [172.31.5.16]
  393.  
  394. PLAY RECAP *************************************************************************************************************************************************
  395. 172.31.13.244              : ok=10   changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  396. 172.31.5.16                : ok=7    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  397.  
  398.  
  399.  
  400. #### Verification ####
  401.  
  402. [ec2-user@ip-172-31-5-16 ~]$ docker image ls
  403. REPOSITORY                   TAG       IMAGE ID       CREATED             SIZE
  404. chrisluiz16/nodejs           latest    e6a9f1d99383   3 minutes ago       68.6MB
  405. chrisluiz16/flaskappdocker   latest    4b5cfff19441   About an hour ago   83.5MB
  406. [ec2-user@ip-172-31-5-16 ~]$
  407. [ec2-user@ip-172-31-5-16 ~]$
  408. [ec2-user@ip-172-31-5-16 ~]$
  409. [ec2-user@ip-172-31-5-16 ~]$ docker container ls -a
  410. CONTAINER ID   IMAGE                        COMMAND                  CREATED             STATUS             PORTS                    NAMES
  411. 2164a1949bdc   chrisluiz16/nodejs           "node app.js"            2 minutes ago       Up 2 minutes       0.0.0.0:3000->3000/tcp   nodejsctr
  412. 4bf3ff4acd71   chrisluiz16/flaskappdocker   "gunicorn -w 3 -b 0.…"   About an hour ago   Up About an hour   0.0.0.0:5000->5000/tcp   flaskctr
  413. [ec2-user@ip-172-31-5-16 ~]$
  414. [ec2-user@ip-172-31-5-16 ~]$
  415.  
Advertisement
Add Comment
Please, Sign In to add comment