Ansible භාවිතයෙන් Docker රූපය Dokku වෙත යොදවන්න

Ansible භාවිතයෙන් Docker රූපය Dokku වෙත යොදවන්න

පූර්විකාව

මම මෑතකදී තරමක් පැහැදිලි නමක් සහිත හෙරොකුට සමාන "පොකට්" PaaS ගැන ඉගෙන ගත්තෙමි - ඩොක්කු. යෙදුමට පහසුවෙන් සහතිකයක් එක් කිරීමට සහ කොටුවෙන් පිටත vhost කිරීමට ඇති හැකියාව නිසා මා බෙහෙවින් ආකර්ෂණය වූ නිසා මම මගේ ඩොකර් පින්තූර ඩොක්කු වෙත මාරු කිරීමට තීරණය කළෙමි. හෙරොකුට සමාන විධාන ඩොක්කුට නොතිබීම ගැන මම කලකිරීමට පත් වූ බව ඇත්ත

dokku container:push
dokku container:release
// Очень было бы удобно, но еще нет :(

කණ්ඩායමක් ඉන්නවා tags ඔබට පින්තූර යෙදවීමට ඉඩ සලසයි, නමුත් රූපය දැනටමත් මේ මොහොතේ සත්කාරකයේ තිබිය යුතුය. වෙනත් වචන වලින් කිවහොත්, ඔබ විසින් සාදන ලද දේශීය රූපය පෙරළීම සඳහා, ඔබ පළමුව එය සත්කාරක වෙත පිටපත් කළ යුතුය.

tags:create <app> <tag>                        # Add tag to latest running app image
tags:deploy <app> <tag>                        # Deploy tagged app image
tags:destroy <app> <tag>                       # Remove app image tag

මම ඇන්සිබල් ගැන හුරුපුරුදු වන අතර එය සමඟ සරල පසුපෙළ බෙදාහැරීමේ නල මාර්ග පවා නිර්මාණය කර ඇත, එබැවින් තේරීම පහසු විය. හැබයි මට ඒක එපා වෙලා ඩොක්කු වලට ප්ලගිනයක් ලියන්න පුලුවන්, ඒත් නෑ දැන් බෑ.

ප්ලේබුක්

මෙම playbook දේශීය රූපයක් සංරක්ෂණය කරයි, එය ධාරකයට පිටපත් කරයි, එය ප්‍රතිසාධනය කර එය dokku වෙත යොදවයි. Gitlab repo හි පළ කර ඇත. වැඩිදියුණු කිරීමට තවමත් ඕනෑ තරම් ඉඩ තිබේ.

push-image.dokku.yml

push-image.dokku.yml

---
  - name: "DEPLOY APP '{{ appname }}' TO DOKKU"
    hosts: dokku_hosts
    remote_user: root
    gather_facts: false
    vars:
      tarname: "{{ appname }}__{{ image }}.tar"
      upload_dir: "/usr/local/src"
      upload_path: "{{ upload_dir }}/{{ tarname }}"
      apptag: "{{ upload_tag | default('latest') }}"
      dokku_image: "dokku/{{ appname }}:{{ apptag }}"

    tasks:
      - name: "Archive '{{ image }}' to upload"
        register: env
        delegate_to: localhost
        shell: 
          cmd: docker image save -o "./{{ tarname }}" {{ image }}

      - name: "Upload image '{{ image }}' to dokku at '{{ inventory_hostname }}'"
        register: upload
        copy:
          src: "./{{ tarname }}"
          dest: "{{ upload_path }}"

      - name: "Log - Upload result"
        debug:
          var: upload.dest

      - name: "Restore uploaded docker image"
        register: restore
        shell:
          cmd: docker image load -i "{{ upload_path }}"

      - name: "Log - Restore image"
        debug:
          var: restore.stdout_lines

      - name: "Retag image to '{{ dokku_image }}'"
        shell: 
          cmd: docker tag "{{ image }}" "{{ dokku_image }}"

      - name: "Create dokku tag for '{{ dokku_image }}'"
        shell: 
          cmd: dokku tags:create "{{ appname }}" "{{ apptag }}"

      - name: "Release '{{ appname }}'"
        register: release
        shell: 
          cmd: dokku tags:deploy "{{ appname }}" "{{ apptag }}"  

      - name: "Log - Release"
        debug:
          var: release.stdout_lines  

ansible දැනටමත් දේශීය යන්ත්‍රයේ සහ dokku සත්කාරකයේ ස්ථාපනය කර ඇති බව උපකල්පනය කෙරේ

මේ වගේ පාවිච්චි කරන්න

ansible-playbook push-image.dokku.yml -i some_inventory -e "appname=DOKKU_APP_NAME image=DOCKER_IMAGE"

සමහර_ඉන්වෙන්ටරි

[dokku_hosts]
your.domain.example

මූලාශ්රය: www.habr.com

DDoS ආරක්ෂාව, VPS VDS සේවාදායකයන් සහිත අඩවි සඳහා විශ්වාසදායක සත්කාරකත්වය මිලදී ගන්න 🔥 DDoS ආරක්ෂාව, VPS VDS සේවාදායකයන් සහිත විශ්වාසදායක වෙබ් අඩවි සත්කාරකත්වය මිලදී ගන්න | ProHoster