Bash

在 Bash 中使用 Ansible

  • November 6, 2018

我以這種方式使用安裝了 Ansible 的 Ubuntu 18.04:

apt-get update -y
install software-properties-common
apt-add-repository ppa:ansible/ansible
apt install ansible

我還有一個小 Bash 腳本,我儲存在 GitHub 中,有時我會複製粘貼到我租用的遠端機器的終端中來儲存我自己的網站(因為現在我計劃只有一台這樣的遠端機器,而不是數十/數百或對於大多數 Ansible 使用者來說,數千個)。

劇本

#!/bin/bash
apt-get update -y
apt-get install lamp-server^
apt-get install php-mbstring php-mcrypt php-curl php-cli php-gd
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

有人可能會說“好吧,如果它只是一台機器根本不使用 Ansible,那將是一種矯枉過正”,但我仍然覺得需要自動化它,因為它是一個非常“混亂”的安裝命令集,可能會改變“明天”。

我的問題

我沒有找到文獻來解釋我如何在 Bash 終端內(例如從複製粘貼命令集)但使用 Ansible進行相同的安裝。我還購買了 Jeff Geerling 的書“Ansible for Devops”的印刷版,但基本章節都沒有滿足我的特殊需求。

我發現的只是如何將劇本文件部署到 IP 列表,但我不想將這種“傳統”方式用於 Ansible。我只想將一個 Ansible YAML 命令集從 GitHub 複製到我的終端。

我的問題

你知道我怎麼能做到嗎?

只需將 playbook 文件複製到新主機並使用以下 yaml 指令將其播放到本地主機:

  • hosts: 127.0.0.1:幾乎任何機器localhost的地址。
  • connection: local: 連接類型的 yaml 方向;鑑於我們在這種情況下在本地工作,它在概念上是無用的,但由於目前版本的 Ansible 是如何建構的,它在技術上是必要的)。

有關血腥細節,請參見此處

來自 Ansible 文件:

   - name: Install a list of packages
apt:
   name: "{{ packages }}"
vars:
   packages:
   - foo
   - foo-tools

   - name: Download foo.conf
get_url:
   url: http://example.com/path/file.conf
   dest: /etc/foo.conf
   mode: 0440

因為這是用 Ansible Playbook 格式編寫的。您需要將其寫入 yaml 文件,然後您可以從腳本中呼叫 playbook。您將無法將 yaml 文件嵌入到 bash 腳本中,然後在腳本中呼叫它。

引用自:https://unix.stackexchange.com/questions/480026