在WSL2上安装使用Ansible的STNS-Client的方法

由于在某项业务中有了接触的机会,特此发布。下面将说明如何使用Asinble安装STNS-Client。

首先,Ansible是什么?

总结起来就是一个”基础设施建设自动化工具”。近年来,随着构建和运维系统的规模不断增大,我们可以减少人为操作的错误和工作量。另外,由于具备冪等性,可以确保在所有管理对象上获得相同的结果。
虽然还有其他配置管理工具如 Puppet 和 Chef,但 Ansible 更受欢迎的原因是可以使用 YAML 进行编写,学习成本较低。

运行环境

安装程序的主机

    • WSL (Ubuntu 20.04.5 LTS)

 

    • asinble 6.4.0 (2022/10/11 現在)

 

    asinble-core 2.13.4 (2022/10/11 現在)

适用对象

    Ubuntu 20.04 の VM7台

1. 安装Asinble

1-1. 安装软件包

使用pip通过Asinble进行安装。

$ pip install --user ansible

如果希望在Python环境中安装特定版本,您可以通过明确指定版本来实现,如下例所示。请随时从ansible-build-data-Github上确认版本信息。

$ pip install --user ansible==6.4.0

1-2. 打通路径

如果安装后运行ansible –version时显示命令“ansible”未找到,但可以通过sudo apt install ansible等方式安装时,需要设置环境变量。

打开~/.bashrc文件,然后按照下面的方式添加内容。

export PATH="~/.local/bin:$PATH"

然后,我们要确认版本显示是否正常。

$ ansible --version
ansible [core 2.13.4]
  config file = None
  configured module search path = ['/home/<User>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/<User>/.local/lib/python3.8/site-packages/ansible
  ansible collection location = /home/<User>/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/<User>/.local/bin/ansible
  python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
  jinja version = 3.1.2
  libyaml = True

2. Ansible的设置

为了在pip版本上进行安装,需要生成以下命令的ansible.cfg文件。
通过添加–disabled选项可以生成被注释掉的配置文件。

$ ansible-config init --disabled > ansible.cfg

通过运行ansible-config,将设置配置文件的路径。这次我们将使用默认设置,没有特别的配置。

$ ansible --version
ansible [core 2.13.4]
  config file = /home/<User>/ansible.cfg
  ︙

3. 制作playbook

我們將描述要自動化的操作。這次的STNS伺服器設定已經完成,預先準備好STNS客戶端的設定文件。此外,還有各種文件備份和服務重新啟動的描述。

- hosts: all
  tasks:
    - name: Get installer
      ansible.builtin.uri:
        url: https://repo.stns.jp/scripts/apt-repo.sh
        return_content: true
      register: stns_installer

    - name: Run installer
      become: true
      ansible.builtin.shell:
        cmd: "{{ stns_installer.content }}"
      when: not ansible_check_mode

    - name: Apt install
      become: true
      ansible.builtin.apt:
        pkg:
          - stns-v2
          - libnss-stns-v2
          - cache-stnsd
      ignore_errors: "{{ ansible_check_mode }}"

    - name: Backup /etc/stns/client/stns.conf
      become: true
      ansible.builtin.copy:
        src: /etc/stns/client/stns.conf
        dest: /etc/stns/client/stns.conf.bak
        owner: root
        group: root
        mode: 0644
        remote_src: true

    - name: Copy stns.conf
      become: true
      ansible.builtin.copy:
        src: config/stns.conf
        dest: /etc/stns/client/stns.conf
        owner: root
        group: root
        mode: 0644

    - name: "Restart & Enabled service cache-stnsd"
      become: true
      ansible.builtin.service:
        name: cache-stnsd
        state: restarted
        enabled: true

    - name: Backup /etc/nsswitch.conf
      become: true
      ansible.builtin.copy:
        src: /etc/nsswitch.conf
        dest: /etc/nsswitch.conf.bak
        owner: root
        group: root
        mode: 0644
        remote_src: true

    - name: Copy nsswitch.conf
      become: true
      ansible.builtin.copy:
        src: config/nsswitch.conf
        dest: /etc/nsswitch.conf
        owner: root
        group: root
        mode: 0644

    - name: Backup /etc/ssh/sshd_config
      become: true
      ansible.builtin.copy:
        src: /etc/ssh/sshd_config
        dest: /etc/ssh/sshd_config.bak
        owner: root
        group: root
        mode: 0644
        remote_src: true

    - name: Copy sshd_config
      become: true
      ansible.builtin.copy:
        src: config/sshd_config
        dest: /etc/ssh/sshd_config
        owner: root
        group: root
        mode: 0644

    - name: Restart service sshd
      become: true
      ansible.builtin.service:
        name: sshd
        state: restarted

4. 创建一个包含管理目标主机的清单文件。

创建一个文件,其中包含您想要操作的机器的主机名或 IP 地址。

[stns]
<実行するサーバのホスト名またはIP>

执行游戏策略。

终于要开始执行了。

进行语法检查

$ ansible-playbook -i hosts ./stns-install.yaml --syntax-check
【提示】如果您希望以密码认证而不是SSH密钥认证方式运行,请添加以下选项进行执行。
$ ansible-playbook --ask-pass -K -i hosts ./stns-install.yaml --syntax-check

进行干跑测试。

$ ansible-playbook -i hosts ./stns-install.yaml --check

5-3. 实际执行

$ ansible-playbook -i hosts ./stns-install.yaml

6. 检查冪等性

因为已经执行过playbook,所以确认不会执行任何操作。

$ ansible-playbook -i hosts ./stns-install.yaml

使用Ansible-Lint来提高playbook的质量。

由于不同人有不同的写作方式,playbook 可能会难以阅读和理解。
ansible-lint 是一种工具,旨在提高 playbook 的质量。
如果 playbook 的写作方式不符合一定的规则,ansible-lint 将会指出,建议按照指示进行修正。

$ ansible-lint stns-install.yaml

参考网站或文章 huò

借用这个场合,我想表达我的感激之情。

 

广告
将在 10 秒后关闭
bannerAds