如果它是通过 Vagrant 运行,我怎样才能只安装 MySQL?

How can I get ansible to only install MySQL if it's being run via Vagrant?

我们的实际设置在 AWS 上运行,我们有可用的 RDS,但在 vagrant 中,我们自然需要在本地安装 MySQL。使用 Vagrant 跳过安装的正常方法是什么?我的 ansible 文件看起来像这样:

---
- name: foo
  hosts: foo
  sudo: yes
  roles:
    - common-web
    - bennojoy.mysql
    - php

我建议在您的清单文件中包含特定的组,并且 运行 一个关于 vagrant 实例的 'install locally' 剧本。这也意味着您当然希望在 AWS 实例上 运行 'install RDS config' 剧本...

尝试在一个 playbook 的所有地方做所有的事情是可能的,但我认为为不同的环境使用不同的 playbook 更干净。

您可以这样做,因为 vagrant 总是在根目录“/vagrant”上创建一个目录

所以就这样检查一下:

---
- name: foo
  hosts: foo
  sudo: yes
  roles:
    - common-web
    - bennojoy.mysql
    - php

  tasks:
    - name: Check that /vagrant directory exist
      command: /usr/bin/test -e /vagrant
      register: dir_exists

  roles:
    - common-web
    - { role: bennojoy.mysql, when: when: dir_exists.rc == 0 }
    - php

这里我假设 "bennojoy.mysql" 是您的主要 mysql 角色,请检查它并告诉我它是否适合您。谢谢