我想在ansible中使用when评估多个条件,这里是我的剧本:
- name: Check that the SSH Key exists
local_action:
module: stat
path: "/home/{{ login_user.stdout }}/{{ ssh_key_location }}"
register: sshkey_result
- name: Generating a new SSH key for the current user it's not exists already
local_action:
module: user
name: "{{ login_user.stdout }}"
generate_ssh_key: yes
ssh_key_bits: 2048
when: sshkey_result.rc == 1 and ( github_username is undefined or github_username |lower == 'none' )
Run Code Online (Sandbox Code Playgroud)
这是我的var文件供参考:
---
vpc_region: eu-west-1
key_name: my_github_key
ssh_key_location: .ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此剧本时,我收到此错误:
TASK: [test | Check that the SSH Key exists] ********************************** …Run Code Online (Sandbox Code Playgroud) 我是 Terraform 的新手,只想问问是否可以使用 Terraform 为 IAM 用户设置 AWS 控制台密码。我能够配置 IAM 用户、组、他们的访问和密钥,但找不到设置控制台密码的方法。请指点我可以让它工作的地方。谢谢
我在使用远程vagrant解释器创建Django项目时遇到了问题.
所有步骤都成功了,我能够看到流浪汉口译员但由于这个错误"请选择当地口译员"而无法创建项目.
1-我已经在远程流浪盒上安装了Pip
2-我已经在远程流浪盒上安装了Django

我想将一个安全组的访问权限授予另一个安全组,但我无法使其工作,有人可以指出我哪里做错了吗?
这是我的模块的main.tf:
resource "aws_security_group" "rds_sg" {
name = "${var.name}-${var.environment}-rds"
description = "Security Group ${var.name}-${var.environment}"
vpc_id = "${var.vpc_id}"
tags {
Name = "${var.name}-${var.environment}-rds"
environment = "${var.environment}"
}
// allows traffic from the SG itself
ingress {
from_port = 0
to_port = 0
protocol = "-1"
self = true
}
// allow traffic for TCP 3306
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
security_group_id = "${var.security_group_id}"
}
// outbound internet access
egress {
from_port = 0 …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的 shell 脚本,它在 bash 上运行得非常好,并将变量导出到当前的 bash 环境,但不幸的是它没有将变量导出到 zsh 环境。
#!/bin/bash
export AWS_ACCESS_KEY_ID=$(echo $RESULT | jq --raw-output .Credentials.AccessKeyId)
export AWS_SECRET_ACCESS_KEY=$(echo $RESULT | jq --raw-output .Credentials.SecretAccessKey)
export AWS_SECURITY_TOKEN=$(echo $RESULT | jq --raw-output .Credentials.SessionToken)
Run Code Online (Sandbox Code Playgroud)
我正在这样运行这个脚本:
source myscript.sh
Run Code Online (Sandbox Code Playgroud)
或者
. ./myscript.sh
Run Code Online (Sandbox Code Playgroud)
请指教,我怎样才能让它在 zsh 环境下工作?
我想通过在启动时将它作为用户数据传递给ec2实例来安装nginx.我这样传递它
- name: WebServer | Create the WebServer Instance(s)
local_action:
module: ec2
region: "{{ vpc_region }}"
group: "{{ ec2_security_groups[1].sg_name }}"
keypair: "{{ key_name }}"
instance_type: "{{ web_instance_type }}"
****user_data: "sudo apt-get install nginx -y"****
image: "{{ imgae_id.ami }}"
vpc_subnet_id: "{{ public_subnet }}"
assign_public_ip: True
wait: True
wait_timeout: 600
Run Code Online (Sandbox Code Playgroud)
但是上面的方法对我来说不起作用,虽然它已经成功创建了EC2实例但没有安装nginx.
你能指点我正确的方向吗?谢谢
state=installed在ansible apt 中意味着什么?
- name: Install Node.js
apt:
pkg:
- nodejs
state: installed
update_cache: yes
Run Code Online (Sandbox Code Playgroud)
在文档中或其他地方没有提到它.
我正在使用Ansible v2.0并使用此插件,它显示每个任务消耗的时间,这是我的目录struture:
.
??? aws.yml
??? callback_plugins
? ??? profile_tasks.py
??? inventory
? ??? hosts
??? roles
? ??? ec2instance
? ? ??? defaults
? ? ? ??? main.yml
? ? ??? tasks
? ? ??? main.yml
? ??? ec2key
? ? ??? defaults
? ? ? ??? main.yml
? ? ??? tasks
? ? ??? main.yml
? ??? ec2sg
? ? ??? defaults
? ? ? ??? main.yml
? ? ??? tasks
? ? ??? main.yml
? …Run Code Online (Sandbox Code Playgroud) 我对terraform真的很陌生,想要做这个工作.我能够创建vpc,公共子网并获取它们的ID,现在我想在每个子网内创建一个ec2实例,当我尝试运行ec2模块时,它只在第一个子网内创建实例并忽略其他子网.这是我的代码片段.
输出子网ID:
output "public_subnets_id" {
value = "${join(",", aws_subnet.public.*.id)}"
}
Run Code Online (Sandbox Code Playgroud)
这里的示例输出:
public_subnets_id = subnet-84aae6f4,subnet-a12124e8
Run Code Online (Sandbox Code Playgroud)
这是我的代码,我试图将其拆分并在每个子网内创建实例,但只能创建到第一个子网.
subnet_id = "${element(split(",", var.subnet_id), count.index)}"
Run Code Online (Sandbox Code Playgroud) 我对declare -A这里的内容感到困惑,有人可以解释一下吗?
declare -A deploy
roles="test1 test2 test3 test4"
for role in $roles; do
deploy[$role]=${!role}
done
Run Code Online (Sandbox Code Playgroud)
更迷惑 ${!role}
我做了一些 RnD,但没有找到关于这个主题的任何答案或提示。如果可以使用 boto 将 AMI 从一个 AWS 账户复制到另一个账户,任何人都可以给出提示或答案。
我想避免terraform破坏我之前创建的资源,而是创建新的资源。
我/想要使用这样的地形:
但是,当我尝试传递新的var文件时,我创建了新资源并删除了前一个资源,因此我想创建一个新资源,但仍要保留旧资源,直到我提到要删除它为止。它。
这真的让我感到困惑,有人可以指出我如何实现这一目标吗?
提前致谢
如何找到我的GitHub组织ID?
理想情况下,我可以通过脚本或命令来解析其输出。
ansible ×4
terraform ×4
bash ×2
linux ×2
python ×2
shell ×2
amazon-ami ×1
amazon-ec2 ×1
boto ×1
django ×1
github ×1
github-api ×1
interpreter ×1
oh-my-zsh ×1
pycharm ×1
python-2.7 ×1
zsh ×1