我是 terraform 的新手,我在模块结构上创建了一个自定义的 azure 策略。每个策略代表一个自定义模块。我创建的模块之一是为创建的任何新 azure 资源启用诊断日志。但是,我需要一个存储帐户。(在启用诊断设置之前,我如何实现“depends_on”?或任何其他方法?
我想首先创建存储帐户,然后创建诊断设置模块。在main.tf(调用所有其他模块的地方)或资源内部(模块)?
谢谢您的帮助!!:)
下面的代码代表 main.tf 文件:
//calling the create storage account name
module "createstorageaccount" {
source = "./modules/module_create_storage_account"
depends_on = [
"module_enable_diagnostics_logs"
]
}
Run Code Online (Sandbox Code Playgroud)
这个代表创建存储帐户模块
resource "azurerm_resource_group" "management" {
name = "management-rg"
location = "West Europe"
}
resource "azurerm_storage_account" "test" {
name = "diagnostics${azurerm_resource_group.management.name}"
resource_group_name = "${azurerm_resource_group.management.name}"
location = "${azurerm_resource_group.management.location}"
account_tier = "Standard"
account_replication_type = "LRS"
tags = {
environment = "diagnostics"
}
}
depends_on = [
"module_enable_diagnostics_logs"
]
Run Code Online (Sandbox Code Playgroud) 我有一个类似序列的自定义对象s,该对象继承collections.Sequence并实现了custom __len__和__getitem__。它代表一大串字符串(> 4GB),并且延迟加载(我无法负担全部加载到内存中)。
我想对它进行RE匹配re.compile('some-pattern').match(s),但是失败了TypeError: expected string or buffer。
在实践中,模式并不是'.*'需要整个s加载的东西。通常需要前几十个字节来匹配;但是,我无法事先告知确切的字节数,并且我希望将其保持通用,因此我不想做类似的事情re.compile('some-pattern').match(s[:1000])。
关于如何创建str被接受的类似对象的任何建议re?
以下代码说明了我的失败尝试。继承str也不起作用。
In [1]: import re, collections
In [2]: class MyStr(collections.Sequence):
def __len__(self): return len('hello')
def __getitem__(self, item): return 'hello'[item]
...:
In [3]: print(re.compile('h.*o').match(MyStr()))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-df08913b19d7> in <module>()
----> 1 print(re.compile('h.*o').match(MyStr()))
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)
如果字符串的一大团来自单个大文件,那么我可以使用mmap它,它应该可以工作。但是,我的情况比较复杂。我有多个大文件,mmap每个文件都有一个,并有一个自定义类,它们是它们的串联视图。我实际上想从视图中的任何给定位置开始执行RE匹配。我在原始问题中忽略了这些细节,但是对于想了解为什么我有这样奇怪要求的人来说,这可能会有所帮助。
请帮忙
如何确保 EC2 使用自定义 KMS 密钥;我们使用 terraform 部署 EC2 实例,每次在自动缩放组中启动 EC2 实例时,它都会崩溃并出现以下错误。似乎 EC2 实例无法访问 KMS 密钥
错误: 终止原因:Client.InternalError:启动时出现客户端错误
resource "aws_autoscaling_group" "autoscaling-group" {
name = var.name
availability_zones = var.availability_zones
min_size = var.min_size
desired_capacity = var.desired_capacity
max_size = var.max_size
health_check_type = "EC2"
launch_configuration = aws_launch_configuration.launch_configuration.name
vpc_zone_identifier = local.subnet_id
termination_policies = ["OldestInstance"]
}
resource "aws_launch_configuration" "launch_configuration" {
name = var.name
image_id = var.ami
instance_type = var.instance_type
iam_instance_profile = var.iam_instance_profile_name
security_groups = [aws_security_group.security_group.id]
associate_public_ip_address = true
}
resource "aws_autoscaling_policy" "autoscaling-policy" {
name = var.name …Run Code Online (Sandbox Code Playgroud) 我正在研究如何使 OpenVPN 客户端在 Pod 的容器上工作,我解释了我所做的事情,但是您可以跳过我的所有解释并直接提供您的解决方案,如果可行的话,我不在乎将以下所有内容替换为您的步骤,我想让我的容器以外部和内部网络都可以工作的方式使用 VPN(例如 ExpressVPN)。
我有一个作为 OpenVPN 客户端的 docker 镜像,它可以与以下命令配合使用:
docker run --rm -it --cap-add=NET_ADMIN --device=/dev/net/tun my-app /bin/bash
Run Code Online (Sandbox Code Playgroud)
docker 镜像有一个入口点 bash 脚本:
curl https://vpnvendor/configurations.zip -o /app/configurations.zip
mkdir -p /app/open_vpn/ip_vanish/config
unzip /app/configurations.zip -d /app/open_vpn/config
printf "username\npassword\n" > /app/open_vpn/vpn-auth.conf
cd /app/open_vpn/config
openvpn --config ./config.ovpn --auth-user-pass /app/open_vpn/vpn-auth.conf
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我将它部署为 K8S Pod 中的容器时,它崩溃了,这是可以理解的,K8S 集群需要节点之间的内部网络通信,因此 VPN 破坏了它......我该如何让它工作?谷歌搜索很令人沮丧,没有一个解决方案有效,而且只有几个,有一个有类似的问题:OpenVPN-Client Pod on K8s - Local network unreachable 但不太明白,请帮忙。
由于 IPVanish 众所周知,让我们以他们的 ovpn 为例,我使用其他供应商,但可以访问 IPVanish 帐户,但它也不起作用:
client
dev tun
proto udp
remote lon-a52.ipvanish.com 443
resolv-retry infinite
nobind …Run Code Online (Sandbox Code Playgroud) 我已经在一个 Terraform 计划中创建了 VPC、子网和安全组(我们称之为Plan A)。它执行得很好,状态也存储在远程 S3 后端。
现在我有了一个新的 Terraform 计划(我们称之为Plan B),我需要在其中启动一个 EC2 实例。为此,我需要从Plan ATerraform 输出中获取 VPC、子网 ID 。
有没有推荐的方法来做到这一点?
我尝试创建 scapy 工具来测试嗅探,这是我的代码:
def scan(ip):
arp_req = sc.ARP(pdst=ip)
bc = sc.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_req_bc = bc/arp_req
answer = sc.srp(arp_req_bc, timeout=1, verbose=True)[0]
print("IP\t\t\tMAC Address\n-----------------------")
for element in answer:
print(element[1].psrc + "\t\t" + element[1].hwsrc)
scan("192.168.43.1/24")
Run Code Online (Sandbox Code Playgroud)
输出是:
"Sniffing and sending packets is not available at layer 2: "
RuntimeError: Sniffing and sending packets is not available at layer 2: winpcap is not installed. You may use conf.L3socket orconf.L3socket6 to access layer 3
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 reposurgeon 将 Subversion 存储库转换为 Git,该存储库包含多个具有以下布局的项目:
<groupname>/<projectname>/{trunk,tags,branches}
Run Code Online (Sandbox Code Playgroud)
我试过这个 reposurgeon 脚本:
read <svnrepository.dump
sourcetype svn
prefer git
rebuild myrepository
Run Code Online (Sandbox Code Playgroud)
但结果是每个组都有一个分支的 Git 存储库。
有没有办法将转换限制为单个项目?
我必须在 10 天后删除存储桶中的对象。这意味着存储桶中超过 10 天的所有对象都需要使用 terraform 删除。
无论我在哪里找到删除它的代码,它都有前缀。如果我必须应用于存储桶中的所有对象而不是前缀,需要做什么。
这是我的配置,它工作了一年多但突然停止工作。
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
stage: deploy
image: "hseeberger/scala-sbt:11.0.9.1_1.4.4_2.13.4"
before_script:
- apt-get update
- apt-get install sudo
- apt-get install apt-transport-https ca-certificates curl software-properties-common -y
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
- apt-get update
- apt-get install docker-ce -y
- sudo service docker start
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- sbt docker:publishLocal
Run Code Online (Sandbox Code Playgroud)
GitlabCI 中的错误如下:
[warn] [1] sbt-native-packager wasn't able to identify the docker …Run Code Online (Sandbox Code Playgroud) 尝试在 Terraform 文件中设置参数来备份 Azure SQL 服务器。
\n\n在AWS中我可以添加一个密钥,例如:
\n\n allocated_storage = 1000\n engine_version = \xe2\x80\x9c13.00.4451.0.v1\xe2\x80\x9d\n backup_window = \xe2\x80\x9c18:00-18:30\xe2\x80\x9d\n backup_retention_period = 14\nRun Code Online (Sandbox Code Playgroud)\n\n我找不到类似的密钥来备份 Azure SQL。以下是我在 Terraform Docs 和网络上找到的备份密钥:
\n\n resource "azurerm_sql_server" "some_erver" {\n administrator_login = "some_login"\n administrator_login_password = "some_password"\n location ="some_location"\n name = "some_server"\n resource_group_name = "some_resource"\n version = "some_version"\n\n tags = {\n environment = "t"\n stack-name = "name"\n stack-number = "number"\n app-number = "app-number"\n logicmonitor = "bool"\n }\n backup {\n frequency = "Daily"\n time = "04:00"\n }\n\n retention_daily {\n …Run Code Online (Sandbox Code Playgroud) 鉴于我有 2 个由 terraform 创建的实例
resource "aws_instance" "web1" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
tags = {
Name = "web1"
}
}
resource "aws_instance" "web2" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
tags = {
Name = "web2"
}
}
Run Code Online (Sandbox Code Playgroud)
我如何使用 terraform 为他们创建备份计划?
terraform ×6
python ×2
amazon-ec2 ×1
amazon-s3 ×1
azure ×1
backup ×1
docker ×1
git ×1
gitlab-ci ×1
kubernetes ×1
networking ×1
openvpn ×1
python-2.7 ×1
python-3.x ×1
regex ×1
reposurgeon ×1
scala ×1
scapy ×1
svn ×1
vpn ×1