【问题标题】:Trying to provision my Vagrant with Ansible尝试为我的 Vagrant 提供 Ansible
【发布时间】:2017-02-15 12:15:01
【问题描述】:

我正在尝试使用 Ansible playbook 配置虚拟机。

按照文档,我最终得到了这个简单的 Vagrant 文件:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.network "private_network", ip: "192.168.50.5"

  config.vm.provision "ansible" do |ansible|
    ansible.verbose = "vvv"
    ansible.playbook = "playbook.yml"
  end
end

如您所见,我正在尝试从 playbook.yml 文件配置 xenial64 机器(Ubuntu 16.04)。

当我启动 vagrant provision 时,我得到了以下信息:

$ vagrant provision                                                                   
==> default: Running provisioner: ansible...
    default: Running ansible-playbook...
PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit="default" --inventory-file=/home/mmarteau/Code/ansible-arc/.vagrant/provisioners/ansible/inventory -vvv playbook.yml
Using /etc/ansible/ansible.cfg as config file
statically included: /home/mmarteau/Code/ansible-arc/roles/user/tasks/ho-my-zsh.yml
statically included: /home/mmarteau/Code/ansible-arc/roles/webserver/tasks/nginx.yml
statically included: /home/mmarteau/Code/ansible-arc/roles/webserver/tasks/php.yml
statically included: /etc/ansible/roles/geerlingguy.composer/tasks/global-require.yml
statically included: /etc/ansible/roles/geerlingguy.nodejs/tasks/setup-RedHat.yml
statically included: /etc/ansible/roles/geerlingguy.nodejs/tasks/setup-Debian.yml

PLAYBOOK: playbook.yml *********************************************************
1 plays in playbook.yml

PLAY RECAP *********************************************************************

所以我的文件似乎已被读取,因为我从角色中获得了一些 statically included 到我的 playbook.yml 文件中。

但是,脚本很快停止,我没有任何信息可以调试或查看任何错误。

如何调试这个过程?

编辑:更多信息

这是我的 playbook.yml 文件:

---
- name: Installation du serveur

  # hosts: web
  hosts: test
  vars: 
    user: mmart
    apps: 
        dev:
            branch: development
            domain: admin.test.dev
        master:
            branch: master
            domain: admin.test.fr
    bitbucket_repository: git@bitbucket.org:Test/test.git
    composer_home_path: '/home/mmart/.composer'
    composer_home_owner: mmart
    composer_home_group: mmart
    zsh_theme: agnoster
    environment_file: arc-parameters.yml
    ssh_agent_config: arc-ssh-config

  roles: 
    - apt
    - user
    - webserver
    - geerlingguy.composer
    - geerlingguy.nodejs
    - deploy
    - deployer
...

这是我的主机文件:

[web]
XX.XX.XXX.XXX ansible_ssh_private_key_file=/somekey.pem ansible_become=true ansible_user=ubuntu

[test]

这是.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory vagrant 生成的主机文件:

# Generated by Vagrant

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='ubuntu' ansible_ssh_private_key_file='/home/mmart/Code/ansible-test/.vagrant/machines/default/virtualbox/private_key'

这是正确的吗? ansible_ssh_user 不应该设置为vagrant 吗?

【问题讨论】:

  • 很奇怪。您可以尝试在详细程度中添加第四个 v,看看是否有任何显示。
  • 我认为这可能与我的 ansible 主机文件有关,我应该在其中放入什么?或者在我的剧本的hosts var 中
  • 我的猜测是它正在加载所有内容,然后看不到任何要运行的内容。你能包括你的 playbook.yml 吗?
  • 我用更多信息编辑了我的问题
  • 并且添加第四个 v 不会改变命令行给出的信息

标签: vagrant ansible vagrant-provision


【解决方案1】:

在您的剧本中使用default 作为主机,因为默认情况下 vagrant 只会为该特定主机创建清单元素:

---
- name: Installation du serveur

  hosts: default
  (...)

【讨论】:

  • 效果很好!现在我有一个真正的错误:) 我正在尝试自己修复它,如果我无法解决它,我会发布另一个问题......谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-05-09
  • 2015-12-12
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多