入门Ansible

这次的目标

    • Dockerを導入したLinux環境上で、Ansibleを導入したDockerイメージをビルドします

 

    コンテナの中でplaybookを実行して、ホストOSのファイル一覧を取得します

创建 Docker 映像

我会创建Dockerfile,并安装像vim等实用工具。

FROM centos:8

RUN yum -y install epel-release && \
    yum -y update && \
    yum -y reinstall glibc-common && \
    yum -y install which vim net-tools glibc-langpack-en langpacks-ja python36 openssh-clients passwd sshpass && \
    rm -f /etc/localtime && \
    ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    pip3 install ansible

RUN mkdir /etc/ansible && \
    chmod 777 /etc/ansible && \
    touch /etc/ansible/hosts && \
    chmod 666 /etc/ansible/hosts

ENV LANG="ja_JP.utf8"

构建并执行。

docker build -t ansible .
docker run -it --rm ansible bash

准备执行Ansible。

我們要準備一個庫存檔案(預設為/etc/ansible/hosts)。
確保在容器內可以操作主機作業系統。

172.17.0.1

[all:vars]
ansible_ssh_user=myuser
ansible_ssh_pass=mypassword

我会准备一个操作手册。它会在主机操作系统上搜索指定目录下的文件,并将结果输出。

- hosts: all
  tasks:
    - name: find
      find:
        paths: /home/myuser/mydirectory
        recurse: true
      register: result
    - name: debug
      debug: var=result

执行

# 一度、sshログインしてknown_hostsに入れておく
ssh myuser@172.17.0.1

# playbookを実行する
ansible-playbook myplaybook.yaml

已以JSON格式输出。

PLAY [all] ***********************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [172.17.0.1]

TASK [find directory] ************************************************************************************************************************************************************************
ok: [172.17.0.1]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [172.17.0.1] => {
    "result": {
        "changed": false,
        "examined": 26,
        "failed": false,
        "files": [
            {
                "atime": 1573551290.6783524,
                "ctime": 1573551252.5081663,
                "dev": 64768,
                "gid": 1000,
以下省略
广告
将在 10 秒后关闭
bannerAds