[PYTHON] Versuchen Sie, Git aus dem Quellcode mit den Modulen make und unarchive von Ansible zu installieren

■ Einführung

■ PlayBook, um Git von der Quelle zu installieren

playbook.yml


---
- hosts: all
  remote_user: ec2-user
  become: true
  vars:
    version: 2.9.0
    prefix_dir: /usr/local
    src_dir: "{{ prefix_dir }}/src"
    bin_dir: "{{ prefix_dir }}/bin"
  tasks:
    - name: original git exist check
      stat: path={{ bin_dir }}/git
      register: exist_git

    - debug: msg="git not installed."
      when: exist_git.stat.exists == false

    - name: original git version check
      command: "{{ bin_dir }}/git --version warn=false"
      register: org_version
      changed_when: false
      when: exist_git.stat.exists == true

    - name: install dependences
      yum: name={{ item }}
      with_items:
        - curl-devel
        - expat-devel
        - gettext-devel
        - openssl-devel
        - zlib-devel
        - gcc
        - perl-ExtUtils-MakeMaker
      when: (exist_git.stat.exists == false) or
            (exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")

    - name: make download dir
      file: path={{ src_dir }} state=directory owner=root group=root mode=755
      when: (exist_git.stat.exists == false) or
            (exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")

    - name: download git version {{ version }}
      unarchive:
        src: https://www.kernel.org/pub/software/scm/git/git-{{ version }}.tar.gz
        dest: "{{ src_dir }}"
        copy: no
      when: (exist_git.stat.exists == false) or
            (exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")

    - name: make all
      make:
        chdir: "{{ src_dir }}/git-{{ version }}"
        target: all
        params:
          prefix: "{{ prefix_dir }}"
      when: (exist_git.stat.exists == false) or
            (exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")

    - name: make install
      make:
        chdir: "{{ src_dir }}/git-{{ version }}"
        target: install
        params:
          prefix: "{{ prefix_dir }}"
      when: (exist_git.stat.exists == false) or
            (exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")

Die Ausführung ist wie folgt.

$ ansible-playbook playbook.yml

Bemerkungen

■ Über Modul machen und geändert

Das Make-Modul von Ansible wird bei jeder Ausführung "aktiviert". Ich möchte, dass es beim ersten Ausführen des PlayBook "geändert" wird, aber ich möchte, dass es "in Ordnung" ist, anstatt "geändert", wenn ich dasselbe PlayBook erneut ausführe. Wenn Sie jedoch "defined_when: False" angeben, ist dies "ok", obwohl die Änderungen bei der ersten Ausführung vorgenommen wurden. Sie möchten daher auch vermeiden, "change_when: False" anzugeben. Also habe ich dieses Mal eine Versionsprüfungsfunktion hinzugefügt, die register und when kombiniert.

■ Informationen zur Kombination von nicht archiviertem Modul und https

Die Kombination von "unarchive" und "https" war der Songwriter. Unter Amazon Linux hat es einwandfrei funktioniert, aber es hat nicht funktioniert, als ich den Proxy in einer Proxy-authentifizierten Umgebung konfiguriert habe. Wahrscheinlich, weil Sie nicht angegeben haben, das SSL-Zertifikat ungültig zu machen. Das Modul "unarchive" verfügt über die Option "validate_certs". Wenn Sie "validate_crets = no" angeben, ist dies in Ordnung. Diese Option wird jedoch nur unterstützt, wenn es sich um Ansible Version 2.2 oder höher handelt. In der Umgebung vor Ansible Version 2.1 war es erforderlich, mit der Kombination von "get_url", "https" und "validate_crets = no" herunterzuladen.

■ Fazit

Dieses Mal habe ich versucht, Git von der Quelle aus zu installieren. Wenn Sie jedoch ein Paket installieren möchten, das nicht von RPM aus der Quelle veröffentlicht wurde, kann dieses PlayBook anscheinend angewendet werden.

Na dann.

Recommended Posts

Versuchen Sie, Git aus dem Quellcode mit den Modulen make und unarchive von Ansible zu installieren
Kompilieren und installieren Sie Git aus dem Quellcode.
Versuchen Sie es mit GUI, PyQt in Python
Versuchen Sie es mit pytest-Overview und Samples-
Versuchen Sie es mit Amazon DynamoDB von Python
Führen Sie git von der Quelle in die Linux-Umgebung ein, indem Sie wget mit Nicht-Root-Berechtigungen verwenden