Amazon ec2 如何告诉ansible在不同的环境下使用不同的用户?

Amazon ec2 如何告诉ansible在不同的环境下使用不同的用户?,amazon-ec2,vagrant,ansible,ansible-playbook,Amazon Ec2,Vagrant,Ansible,Ansible Playbook,我正在用Ansible在ec2上构建一台机器。但我也有流浪汉在本地测试脚本 这是我的剧本 - name: Provision ec2 hosts: all user: vagrant sudo: yes gather_facts: true vars: gsutil_user_home: "vagrant" 如果我想在EC2上使用这个剧本,我必须将user和gsutil\u user\u home更改为ubuntu,才能让它正常工作。我是否可以将其作为一个变量,并根

我正在用Ansible在ec2上构建一台机器。但我也有流浪汉在本地测试脚本

这是我的剧本

- name: Provision ec2
  hosts: all
  user: vagrant
  sudo: yes
  gather_facts: true
  vars:
    gsutil_user_home: "vagrant"

如果我想在EC2上使用这个剧本,我必须将
user
gsutil\u user\u home
更改为
ubuntu
,才能让它正常工作。我是否可以将其作为一个变量,并根据一些参数告诉Ansible它需要运行哪个用户

如果这些值在您的剧本持续时间内通常是一致的,您通常会在资源清册中将它们设置为组/主机变量,并为不同的环境设置不同的资源清册或组。但是,如果您真的想使用vars并使用
-e
传递它们,也可以:

- name: Provision ec2
  hosts: all
  user: {{ my_ec2_user }}
  sudo: yes
  gather_facts: true
  vars:
    gsutil_user_home: {{ gsutil_user_home }}

如果这些值在剧本的持续时间内通常是一致的,那么您通常会在资源清册中将它们设置为组/主机变量,并为不同的环境设置不同的资源清册或组。但是,如果您真的想使用vars并使用
-e
传递它们,也可以:

- name: Provision ec2
  hosts: all
  user: {{ my_ec2_user }}
  sudo: yes
  gather_facts: true
  vars:
    gsutil_user_home: {{ gsutil_user_home }}

我建议您创建文件夹,如
开发
生产
登台
。将
hosts
文件、
group\u vars
hosts\u vars
设置为正确的变量并使用它们

例如:

文件夹结构 test.yml 主机-开发 主机-数据生产 运行它:
我建议您创建文件夹,如
开发
生产
登台
。将
hosts
文件、
group\u vars
hosts\u vars
设置为正确的变量并使用它们

例如:

文件夹结构 test.yml 主机-开发 主机-数据生产 运行它:
---
- hosts: localhost
  gather_facts: no
  connection: local
  tasks:
    - debug: var=ansible_ssh_user
[localhost]
127.0.0.1 ansible_ssh_user=vagrant
[localhost]
127.0.0.1 ansible_ssh_user=ec2-user
$ ansible-playbook -i develop/ test.yml 

PLAY [localhost] ************************************************************** 

TASK: [debug var=ansible_ssh_user] ******************************************** 
ok: [127.0.0.1] => {
    "var": {
        "ansible_ssh_user": "vagrant"
    }
}

PLAY RECAP ******************************************************************** 
127.0.0.1                  : ok=1    changed=0    unreachable=0    failed=0   

$ ansible-playbook -i production/ test.yml 

PLAY [localhost] ************************************************************** 

TASK: [debug var=ansible_ssh_user] ******************************************** 
ok: [127.0.0.1] => {
    "var": {
        "ansible_ssh_user": "ec2-user"
    }
}

PLAY RECAP ******************************************************************** 
127.0.0.1                  : ok=1    changed=0    unreachable=0    failed=0