Azure devops 如何使用terrafrom在远程实例中克隆git存储库?

Azure devops 如何使用terrafrom在远程实例中克隆git存储库?,azure-devops,repository,terraform,git-clone,oracle-cloud-infrastructure,Azure Devops,Repository,Terraform,Git Clone,Oracle Cloud Infrastructure,我正在使用terraform在Oracle云基础设施中创建一个实例(虚拟机)。 我想将git存储库(特别是从azure devops)克隆到新创建的实例 是否有任何地形模块来实现这一点 或者可以在provisioner中使用的任何shell/ansible脚本?您可以使用terraformnull\u资源。使用remoteexecprovisioner,它就像ssh一样,提供凭证并列出shell命令。最好的部分是依赖关系模型。您可以指示在其他依赖资源可用后将null_资源激发。此示例为连接部分指

我正在使用terraform在Oracle云基础设施中创建一个实例(虚拟机)。 我想将git存储库(特别是从azure devops)克隆到新创建的实例

是否有任何地形模块来实现这一点


或者可以在provisioner中使用的任何shell/ansible脚本?

您可以使用terraform
null\u资源。使用
remoteexec
provisioner,它就像ssh一样,提供凭证并列出shell命令。最好的部分是依赖关系模型。您可以指示在其他依赖资源可用后将null_资源激发。此示例为连接部分指定了一个跳转主机/堡垒主机。这是可选的

resource "null_resource" "demo_webserver1_httpd" {
 depends_on = [oci_core_instance.demo_webserver1,oci_core_instance.demo_bastionserver,null_resource.demo_webserver1_shared_filesystem]
 provisioner "remote-exec" {
        connection {
                type     = "ssh"
                user     = "opc"
                host     = data.oci_core_vnic.demo_webserver1_vnic1.private_ip_address
                private_key = file(var.private_key_oci)
                script_path = "/home/opc/myhttpd.sh"
                agent = false
                timeout = "10m"
                bastion_host = data.oci_core_vnic.demo_bastionserver_vnic1.public_ip_address
                bastion_port = "22"
                bastion_user = "opc"
                bastion_private_key = file(var.private_key_oci)
        }

  inline = ["echo '== 1. Installing HTTPD package with yum'",
            "sudo -u root yum -y -q install httpd",

            "echo '== 2. Creating /sharedfs/index.html'",
            "sudo -u root touch /sharedfs/index.html", 
            "sudo /bin/su -c \"echo 'Welcome to demo.com! These are both WEBSERVERS under LB umbrella with shared index.html ...' > /sharedfs/index.html\"",

            "echo '== 3. Adding Alias and Directory sharedfs to /etc/httpd/conf/httpd.conf'",
            "sudo /bin/su -c \"echo 'Alias /shared/ /sharedfs/' >> /etc/httpd/conf/httpd.conf\"",
            "sudo /bin/su -c \"echo '<Directory /sharedfs>' >> /etc/httpd/conf/httpd.conf\"",
            "sudo /bin/su -c \"echo 'AllowOverride All' >> /etc/httpd/conf/httpd.conf\"",
            "sudo /bin/su -c \"echo 'Require all granted' >> /etc/httpd/conf/httpd.conf\"",
            "sudo /bin/su -c \"echo '</Directory>' >> /etc/httpd/conf/httpd.conf\"",

            "echo '== 4. Disabling SELinux'",
            "sudo -u root setenforce 0",

            "echo '== 5. Disabling firewall and starting HTTPD service'",
            "sudo -u root service firewalld stop",
            "sudo -u root service httpd start"
           ]
  }

}
resource“null\u resource”demo\u webserver1\u httpd{
依赖于=[oci_core_实例。演示_Web服务器1,oci_core_实例。演示_BasionServer,null_资源。演示_Web服务器1_共享文件系统]
供应器“远程执行”{
联系{
type=“ssh”
user=“opc”
主机=data.oci_core_vnic.demo_webserver1_vnic1.private_ip_地址
private\u key=file(var.private\u key\u oci)
script_path=“/home/opc/myhttpd.sh”
代理=错误
超时=“10米”
bastion\u host=data.oci\u core\u vnic.demo\u bastionserver\u vnic1.public\u ip\u地址
bastion_port=“22”
bastion_user=“opc”
bastion\u private\u key=文件(var.private\u key\u oci)
}
内联=[“echo'==1.使用yum安装HTTPD包,
“sudo-u root yum-y-q安装httpd”,
“echo'==2.Creating/sharedfs/index.html',
“sudo-u root touch/sharedfs/index.html”,
“sudo/bin/su-c \”echo“欢迎访问demo.com!这两个都是LB保护伞下的Web服务器,具有shared index.html…”>/sharedfs/index.html\”,
“echo'==3.将别名和目录sharedfs添加到/etc/httpd/conf/httpd.conf'”,
“sudo/bin/su-c\”echo'Alias/shared//sharedfs/'>>/etc/httpd/conf/httpd.conf\”,
“sudo/bin/su-c\”echo“”>>/etc/httpd/conf/httpd.conf\”,
“sudo/bin/su-c\”echo'AllowOverride All'>>/etc/httpd/conf/httpd.conf\”,
“sudo/bin/su-c \”echo'需要所有授权'>>/etc/httpd/conf/httpd.conf\”,
“sudo/bin/su-c\”echo“”>>/etc/httpd/conf/httpd.conf\”,
“echo'==4.禁用SELinux'”,
“sudo-u根集合强制执行0”,
“echo'==5.禁用防火墙并启动HTTPD服务”,
“sudo-u根服务防火墙停止”,
“sudo-u根服务httpd启动”
]
}
}
通过访问以下资源,您将发现很好的OCI和地形示例:


祝你好运

好的,谢谢你的回复。但我真正想要的是克隆存储库的命令和之前必须执行的配置。