wake-up-neo.net

Speicherort der Ansible Host-Datei unter Mac OS X

Ich versuche mit Ansible zu beginnen, um meine Vagrantbox bereitzustellen, aber ich kann nicht herausfinden, wie mit Host-Dateien verfahren wird.

Laut Dokumentation sollte das in /etc/ansible/hosts gespeichert sein, aber ich kann das auf meinem System (Mac OS X) nicht finden. Ich habe auch Beispiele gesehen, bei denen sich die Host.ini-Datei im Dokumentstamm neben der Vagrant-Datei befindet.

Meine Frage ist also, wo würden Sie Ihre Hostdatei speichern, um eine einzelne Vagabondose einzurichten?

60
StenW

Ansible versucht /etc/ansible/hosts standardmäßig, es gibt jedoch mehrere Möglichkeiten, ansible zu ermitteln, wo nach einer alternativen Inventardatei gesucht werden soll:

  • verwenden Sie den Befehlszeilenschalter -i und übergeben Sie den Pfad der Inventardatei
  • fügen Sie hostfile = path_to_hostfile im Abschnitt [defaults] Ihres ~/.ansible.cfgKonfigurationsdatei hinzu.
  • verwenden Sie export ANSIBLE_HOSTS=path_to_hostfile, wie von DomaNitro in seiner Antwort vorgeschlagen

Sie erwähnen jetzt nicht, ob Sie den in vagrant verfügbaren ansible Provisionner verwenden möchten oder ob Sie Ihren vagrant Host manuell bereitstellen möchten.

Gehen wir zuerst für den Vagrant ansible Provisionner:

Erstellen Sie ein Verzeichnis (z. B. test) und erstellen Sie eine Vagrant-Datei in:

Vagrantfile:

Vagrant.configure("2") do |config|

  config.vm.box = "precise64-v1.2"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.define :webapp do |webapp|
    webapp.vm.hostname = "webapp.local"
    webapp.vm.network :private_network, ip: "192.168.123.2"
    webapp.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", 200, "--name", "vagrant-docs", "--natdnshostresolver1", "on"]
    end
  end

  # 
  # Provisionning
  #
  config.vm.provision :ansible do |ansible|
    ansible.playbook = "provision.yml"
    ansible.inventory_path = "hosts"
    ansible.Sudo = true
    #
    # Use anible.tags if you want to restrict what `vagrant provision`
    # Here is a list of possible tags
    # ansible.tags = "foo bar"
    #
    # Use ansible.verbose to see detailled output for ansible runs
    # ansible.verbose = 'vvv'
    #
    # Customize your stuff here
    ansible.extra_vars = { 
      some_var: 42,
      foo: "bar",
    }
  end
end

Wenn Sie nun vagrant up (oder vagrant provision) ausführen, sucht Vangrants ansible Provionner im selben Verzeichnis wie Vagrantfile nach einem Dateinamen hosts und versucht, das provision.yml-Playbook anzuwenden.

Sie können es auch manuell ausführen, ohne auf Vagrants ansible Provisionner zurückzugreifen:

ansible-playbook -i hosts provision.yml --ask-pass --Sudo

Beachten Sie, dass das Vagrant + Virtualbox + Ansible-Trio nicht immer gut miteinander auskommt. Es gibt einige Versionskombinationen, die problematisch sind. Versuchen Sie, ein Upgrade auf die neuesten Versionen durchzuführen, falls Probleme auftreten (insbesondere beim Netzwerk). 

{shameless_plug} Sie finden ein ausführlicheres Beispiel, in dem vagrant und ansible hier {/ shameless_plug} gemischt wird.

Viel Glück !

69
leucos

Wenn Sie Ansible mit Brew installiert haben, finden Sie höchstwahrscheinlich die Standard-Hosts-Datei unter /usr/local/etc/ansible/hosts. Aber, wie andere darauf hingewiesen haben, möchten Sie vielleicht nur die Standardeinstellung ändern.

38
counterbeing

Ich benutze gerne bash-Umgebungsvariablen, da mein Basisprojekt mit anderen Benutzern geteilt wird. Sie können einfach export ANSIBLE_HOSTS=/pathTo/inventory/ dies kann eine Host-Datei oder ein Verzeichnis mit mehreren Dateien sein.

Sie können es auch in Ihr ~/.bash_profile schreiben, so dass es dauerhaft ist Eine Reihe anderer Variablen kann dies festlegen, anstatt eine conf-Datei aufzubewahren, um weitere Informationen zu erhalten

7
DomaNitro

Wenn Sie Vagrants Ansible Provisioner verwenden, generiert Vagrant automatisch eine Ansible-Hosts-Datei (genannt vagrant_ansible_inventory_default) und konfiguriert das Ansible-Playbook zur Verwendung dieser Datei. Es sieht aus wie das:

# Generated by Vagrant

default ansible_ssh_Host=127.0.0.1 ansible_ssh_port=2222

Der Vagrant Host wird als "Standard" bezeichnet, daher sollten Ihre Spiele entweder auf "Standard" oder "Alle" verweisen.

3
Lorin Hochstein

Hier ist eine Beschreibung, was nach der Installation von Ansible auf einem Mac zu tun ist. Es hat für mich funktioniert: ansible-tips-and-tricks.readthedocs.io

Ich habe die ansible.cfg-Datei in heruntergeladen 

/Users/"yourUser"/.ansible

und anschließend können Sie die ansible.cfg -Datei bearbeiten, indem Sie das Kommentarzeichen entfernen 

inventory      = /Users/"yourUser"/.ansible 

und geben Sie den Pfad zu dem anzeigbaren Ordner wie oben gezeigt an. Sie können die hosts-Datei dann auch in diesem Ordner erstellen. Um es lokal auszuprobieren, können Sie setzen 

localhost              ansible_connection=local

in der hosts-Datei und probiere es mit aus 

ansible -m ping all