## terraform provisioner ##
1. terraform跟ansible puppet等工具最大的區別就是terraform主要是服務資源的編排(service provisioning tools)工具,比如創建服務器、數據庫,存儲,負載均衡、網絡,但是ansible是配置管理( config management tools )工具,比如配置服務器安裝軟件,拷貝文件等等
2. terraform也具備配置管理的功能,他是通過provisioner來實現,也可以實現文件遠程拷貝,服務器的本地或者遠程配置
## provisioner 類型 ##
1. File Provisioner
The file provisioner is used to copy files or directories from the machine executing Terraform to the newly created resource. The file provisioner supports both ssh and winrm type connections.
2. local-exec Provisioner
The local-exec provisioner invokes a local executable after a resource is created. This invokes a process on the machine running Terraform, not on the resource.
3. remote-exec Provisioner
The remote-exec provisioner invokes a script on a remote resource after it is created. This can be used to run a configuration management tool, bootstrap into a cluster, etc.
## provisoner connection ##
```
provisioner "file" {
source = "conf/myapp.conf"
destination = "/etc/myapp.conf"
connection {
type = "ssh"
user = "root"
password = "${var.root_password}"
host = "${var.host}"
}
}
```
## Provisioners Without a Resource ##
```
resource "null_resource" "cluster" {
# Changes to any instance of the cluster requires re-provisioning
triggers = {
cluster_instance_ids = "${join(",", aws_instance.cluster.*.id)}"
}
# Bootstrap script can run on any instance of the cluster
# So we just choose the first in this case
connection {
host = "${element(aws_instance.cluster.*.public_ip, 0)}"
}
provisioner "remote-exec" {
# Bootstrap script called with private_ip of each node in the cluster
inline = [
"bootstrap-cluster.sh ${join(" ", aws_instance.cluster.*.private_ip)}",
]
}
}
```
- 【概要簡介】1.001-簡介-本課程體系簡介
- 【概要簡介】1.002-簡介-云的發展趨勢
- 【概要簡介】1.003-簡介-國內主流的云服務平臺
- 【概要簡介】1.004-簡介-Terraform云平臺devops的瑞士軍刀
- 【快速入門】2.000-快速入門-云后臺創建主機
- 【快速入門】2.001-快速入門-創建主機-先查詢資源
- 【快速入門】2.002-快速入門-創建主機-阿里云
- 【快速入門】2.003-快速入門-創建主機-亞馬遜aws
- 【快速入門】2.100-快速入門-官方網站學習資料
- 【快速入門】2.101-快速入門-Terraform主要的文件.
- 【快速入門】2.102-快速入門-創建虛擬網絡
- 【快速入門】1.103-快速入門-創建安全和規則
- 【快速入門】2.104-快速入門-創建云盤
- 【快速入門】2.105-快速入門-創建Ecs主機服務
- 【快速入門】2.200-快速入門-搭建Nginx
- 【快速入門】2.201-快速入門-搭建Nginx-分拆main文件
- 【快速入門】2.203-快速入門-購買固定IP并綁定到主機
- 【快速入門】2.204-快速入門-綁定域名到自己的主頁
- 【快速入門】2.205-快速入門-申請免費的https證書并綁定TODO
- 【快速入門】2.300-快速入門-創建Oss存儲并搭建靜態網站
- 【快速入門】2.300-快速入門-Cdn-TODO
- 【中級進階】3.101-中級進階-用Packer創建Wordpress的主機鏡像
- 【中級進階】3.102-中級進階-利用自己的鏡像創建Ecs主機
- 【中級進階】3.104-中級進階-用自己鏡像搭建負載均衡的Wordpress網站
- 【中級進階】3.105-中級進階-利用彈性伸縮ESS創建SLB對應的動態數量的ECS服務器
- 【中級進階】3.106-中級進階-自定義Module搭建多個負載均衡的Wordpress網站
- 【中級進階】3.200-中級進階-備份多個Wordpress服務器的日志到ossTODO
- 【中級進階】3.300-中級進階-創建Ecs快照服務
- 【中級進階】3.400-中級進階-Datasource查詢
- 【中級進階】3.500-中級進階-保存Terraform的state文件
- 【中級進階】3.600-中級進階-Variables and environment variables
- 【中級進階】3.700-中級進階-Terraform命令解析
- 【高級深入】4.000-高級深入-創建容器鏡像服務
- 【高級深入】4.001-高級深入-編譯自己的docker鏡像并上傳到Aliyun cr
- 【高級深入】4.002-高級深入-Terraform創建Kubernetes集群
- 【高級深入】4.003-高級深入-Terraform在Kubernetes集群中部署Wordpress應用
- 【高級深入】4.100-高級深入-使用云服務平臺提供的module來創建服務資源
- 【高級深入】4.200-高級深入-同步Terraform的狀態.到terraform cloud
- 【高級深入】4.300-高級深入-Terraform的語法
- 【高級深入】4.400-高級深入-Terraform與其Ansible一起使用
- 【高級深入】4.500-高級深入-Terraform的provisioner
- 【高級深入】4.600-高級深入-Snat
- 【高級深入】4.601-高級深入-Dnat
- 4.602-高級深入-Vpc-vpc通信
- 【高級深入】4.603-高級深入-Switch與switch-通信