我看到亚马逊推出了从原生MySQL到Amazon Aurora MySQL的新Amazon Aurora MySQL 迁移.
是否可以使用Amazon RDS从Amazon Aurora迁移回常规MySQL?
我正在使用Ansible进行配置管理,并使用以下任务来克隆Git 仓库:
# Example git checkout from Ansible Playbooks
- git: repo=git://foosball.example.org/path/to/repo.git
dest=/srv/checkout
version=release-0.22
Run Code Online (Sandbox Code Playgroud)
这将使用特定版本克隆repo.
git pull
如果回购已经存在,它会在再次运行时执行吗?或者它只是一直克隆回购?git pull
如果repo已经存在,如何在Ansible中执行a ,如果repo存在,我们如何运行特定命令,如果第一次克隆repo,我们如何运行?
我正在尝试创建将在其中创建用户列表的playbook.
但是,我还想为每个用户生成随机密码.生成密码后,我希望在playbook文件旁边有一个文本文件,其中包含用户名:new_generated_password键值.是否可以在不开发新模块的情况下完成此操作?
有没有办法在重新组织/重命名资源时避免资源删除?示例:当我第一次实现CloudFront Terraform时,它是我项目中的一个独立子目录,后来我切换到使用它作为我的根Terraform配置中的模块,但这导致Terraform想要删除旧的CloudFront分配并创建一个新的:
Terraform will perform the following actions:
- aws_cloudfront_distribution.main_site_distribution
+ module.cloudfront.aws_cloudfront_distribution.main_site_distribution
Run Code Online (Sandbox Code Playgroud)
有没有办法强制Terraform重命名资源?
我们将最新批准的 AMI 存储在 AWS 参数存储中。使用 Terraform 创建新实例时,我想以编程方式获取此 AMI ID。我有一个命令来提取 AMI ID,但我不确定如何将它与 Terraform 一起使用。
这是我用来提取 AMI ID 的命令:
$(aws ssm get-parameter --name /path/to/ami --query 'Parameter.Value' --output text)
Run Code Online (Sandbox Code Playgroud)
这是我的 Terraform 脚本:
resource "aws_instance" "nginx" {
ami = "ami-c58c1dd3" # pull value from parameter store
instance_type = "t2.micro"
#key_name = "${var.key_name}"
provisioner "remote-exec" {
inline = [
"sudo yum install nginx -y",
"sudo service nginx start"
]
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用命令在 Terraform 脚本中提取 AMI ID?
我的任务定义:
resource "aws_ecs_task_definition" "datadog" {
family = "${var.environment}-datadog-agent-task"
task_role_arn = "arn:aws:iam::xxxxxxxx:role/datadog-role"
container_definitions = <<EOF
[
{
"name": "${var.environment}-${var.datadog-identifier}",
"network_mode" : "awsvpc",
"image": "datadog/agent:latest",
"portMappings": [
{
...
Run Code Online (Sandbox Code Playgroud)
我的服务定义:
resource "aws_ecs_service" "datadog" {
name = "${var.environment}-${var.datadog-identifier}-datadog-ecs-service"
cluster = "${var.cluster}"
task_definition = "${aws_ecs_task_definition.datadog.arn}"
network_configuration {
subnets = flatten(["${var.private_subnet_ids}"])
}
# This allows running one for every instance
scheduling_strategy = "DAEMON"
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 -
InvalidParameterException: Network Configuration is not valid for the given networkMode of this task definition
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么吗?查看 Terraform 文档和 GitHub 问题,这应该可行。它与将 …
amazon-web-services amazon-ecs terraform terraform-provider-aws
我需要扫描/etc/fstab
文件以查找条目,如果不存在,则将其他文件的内容附加到/etc/fstab
.
我见过的Ansible模块似乎不允许将文件附加到另一个文件而只是添加一个特定的"文本"行.
我想创建一个复杂的变量(nginx_ssl_vhosts_list),并使用另一个简单变量(reverse_proxy_ssl)的循环,但我无法让它工作。是否可以有类似以下代码的内容,或者我应该使用自定义插件吗?
这是我认为它会如何工作的:
- hosts: localhost
gather_facts: no
connection: local
vars:
reverse_proxy_ssl:
- name: foo.org
frontport: 443
fronturl : /
backend: http://192.168.1.1:8080
- name: bar.org
frontport: 443
fronturl : /
backend: http://192.168.1.2:443
nginx_ssl_vhosts_list:
- listen: "{{ item.frontport }} ssl"
server_name: "{{ item.name }}"
access_log: "{{ item.name }}.access.log"
error_log: "{{ item.name }}.error.log"
extra_parameters: |
location {{ item.fronturl }} {
proxy_pass {{ item.backend }};
}
ssl_certificate {{ item.name }}.crt;
ssl_certificate_key {{ item.name }}.key;
with_items: "{{ reverse_proxy_ssl }}"
tasks:
- debug: msg="{{ nginx_ssl_vhosts_list }}"
Run Code Online (Sandbox Code Playgroud) 我们正在尝试为AWS中的以下活动创建Terraform模块,以便我们可以在需要的地方使用它们.
但是在创建这些模块时,我们必须在上面列出的所有模块中定义提供者.所以我们决定为提供者创建一个模块,以便我们可以在其他模块(VPC,Subnet等)中调用该提供者模块.
上述方法的问题在于它没有采用提供者值,并要求用户输入区域.
Terraform配置如下:
provider "aws" {
region = "${var.region}"
}
Run Code Online (Sandbox Code Playgroud)
variable "region" {}
Run Code Online (Sandbox Code Playgroud)
module "provider" {
source = "../../modules/providers"
region = "${var.region}"
}
resource "aws_vpc" "vpc" {
cidr_block = "${var.vpc_cidr}"
tags = {
"name" = "${var.environment}_McD_VPC"
}
}
Run Code Online (Sandbox Code Playgroud)
variable "vpc_cidr" {}
variable "environment" {}
variable "region" {}
Run Code Online (Sandbox Code Playgroud)
module "dev_vpc" {
source = "modules/vpc"
vpc_cidr = "${var.vpc_cidr}"
environment = …
Run Code Online (Sandbox Code Playgroud) 这是我的s3_policy.json
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"mybucket",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":[
"arn:aws:s3:::${bucket_name}/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"10.xx.xxx.x",
"172.168.xx.x",
........,
.........,
..........,
...........,
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有一个共同的回购,我用它来做不同的项目.这个通用仓库有一个yaml格式的CIDR IP列表.
我想将它拉入我的Terraform项目,以便我可以重新使用相同的文件而不是硬编码IP地址.
我无法找到一种自动化方法,而不是在此repo中硬编码IP地址.
terraform ×5
ansible ×4
amazon-ecs ×1
amazon-rds ×1
amazon-s3 ×1
file ×1
git ×1
github ×1
mysql ×1