【ルール説明・安全性】最新・パッケージ-最新

这篇文章是 Ansible lint Advent Calendar 2022 第16天的文章。

这次我们将介绍最新的规则及最新的套餐。

最新的

最新版本将验证ansible.builtin.git模块和community.general.hg模块在获取源代码时是否没有副作用。

有问题的代码之一

---
- name: Example for `latest` rule
  hosts: localhost
  tasks:
    - name: Risky use of git module
      ansible.builtin.git:
        repo: "https://foosball.example.org/path/to/repo.git"
        version: HEAD # <-- HEADが指定されているためリポジトリの更新状態によりどのバージョンのコードが取得されるのか決まっていない

修正过的代码之一

---
- name: Example for `latest` rule
  hosts: localhost
  tasks:
    - name: Safe use of git module
      ansible.builtin.git:
        repo: "https://foosball.example.org/path/to/repo.git"
        version: abcd1234... # <-- コミットのSHA・タグ・ブランチ名等を指定し一意のコミットIDが指定されるようにする

有问题的代码2

---
- name: Example for `latest` rule
  hosts: localhost
  tasks:
    - name: Risky use of git module
      ansible.builtin.git:
        repo: "https://foosball.example.org/path/to/repo.git"
        version: main # <- mainブランチが指定されている

修正后的代码2

---
- name: Example for `latest` rule
  hosts: localhost
  tasks:
    - name: Safe use of git module
      ansible.builtin.git:
        repo: "https://foosball.example.org/path/to/repo.git"
        version: main # noqa: latest <- mainブランチが常に安全であると確信がある場合はAnsible lintの検証をスキップする

最新版本的软件包

package-latest会验证操作系统的软件包管理器是否可以安全地安装软件,以避免出现副作用。

根据建议,当使用Ansible进行新安装软件包时应指定版本,而在更新已安装的软件包时应避免安装不必要的软件。

有问题的代码之一

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install Ansible
      ansible.builtin.yum:
        name: ansible
        state: latest # <- 最新版のパッケージをインストールする

被修改的代码1

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install Ansible
      ansible.builtin.yum:
        name: ansible-2.12.7.0 # <- バージョンを指定する
        state: present

有问题的代码二

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install Ansible-lint
      ansible.builtin.pip:
        name: ansible-lint
      args:
        state: latest # <- 最新版のパッケージを新規インストールする

修改后的代码2

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install Ansible-lint
      ansible.builtin.pip:
        name: ansible-lint
      args:
        state: present
        version: 5.4.0 # <- バージョンを指定する

第3個有問題的程式碼是什麼?

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install some-package
      ansible.builtin.package:
        name: some-package
        state: latest # <- 最新版のパッケージをインストールする

第三个修正后的代码。

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install some-package
      ansible.builtin.package:
        name: some-package
        state: present # <- presentを指定する

第四段有问题的代码是什么?

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Install Ansible with update_only to false
      ansible.builtin.yum:
        name: sudo
        state: latest
        update_only: false # <- パッケージを最新版にアップデートする

第四个修订后的代码。

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Update Ansible with update_only to true
      ansible.builtin.yum:
        name: sudo
        state: latest
        update_only: true # <- アップデートの実行はするが他のソフトウェアはインストールしない

参考网站

    • latest — Ansible Lint Documentation

 

    package-latest — Ansible Lint Documentation
广告
将在 10 秒后关闭
bannerAds