1

Avoir un problème avec l'augmentation des ressources EC2 pour terraform et l'application des modifications avec Ansible. J'ai actuellement un modèle de base avec:Augmenter le nombre de ressources EC2 dans Terraform et appliquer Ansible

resource "aws_instance" "linux_node" { 
    count = 2 
    ami   = "ami-6df1e514" 
    instance_type = "t2.micro" 
    key_name = "" 
    vpc_security_group_ids = [""] 
    iam_instance_profile = "" 
    user_data = "${file("userdata.sh")}" 

    tags { 
    Name = "linux-node" 
    } 

    provisioner "local-exec" { 
     command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${aws_instance.linux_node.public_ip},' ../install_packages.yml" 
    } 
} 

La question quand j'augmenter le nombre à quelque chose de plus de 1, je reçois une erreur sur aws_instance.linux_node.public_ip où l'erreur dit:

* aws_instance.linux_node[1]: 1 error(s) occurred: 

* Resource 'aws_instance.linux_node' not found for variable 'aws_instance.linux_node.public_ip' 

Je pense qu'il vient à partir du support [1]. Je me demande comment écrire une commande ansible pour prendre la modification quand je fais la modification pour ajouter une instance EC2.

+1

conseiller Suplemental mais Je remarque que vous faites quelques choses qui pourraient être supportées par Auto Scaling dans EC2 (https://aws.amazon.com/autoscaling/) en utilisant une solution Ansible/terraform. Vous pouvez envisager d'évaluer si Auto Scaling peut décharger une partie de ce que vous faites. –

Répondre

1

Lorsqu'une ressource contient count, elle doit être adressée d'une manière différente pour spécifier les instances que vous souhaitez utiliser.

Pour approvisionneurs en particulier, il est un cas commun de vouloir prendre des mesures en fonction de l'instance « en cours » l'approvisionneur est en cours d'exécution pour, si un raccourci est fourni avec le type de variable self:

provisioner "local-exec" { 
    command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${self.public_ip},' ../install_packages.yml" 
} 
+0

bonne réponse, bon à savoir. – BMW

+0

Excellent. Flawless merci beaucoup Martin – Patrick