{"id":35014,"date":"2024-09-27T09:58:34","date_gmt":"2024-09-27T02:58:34","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/27\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/"},"modified":"2024-09-27T09:58:34","modified_gmt":"2024-09-27T02:58:34","slug":"deploy-a-wordpress-site-using-terraform-and-linode-stackscripts","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/27\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/","title":{"rendered":"Tri\u1ec3n khai trang WordPress b\u1eb1ng Terraform v\u00e0 Linode StackScripts"},"content":{"rendered":"<p>Nh\u00e0 cung c\u1ea5p Terraform c\u1ee7a Linode h\u1ed7 tr\u1ee3&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/stackscripts\/\">StackScripts<\/a>&nbsp;. StackScripts cho ph\u00e9p b\u1ea1n t\u1ef1 \u0111\u1ed9ng tri\u1ec3n khai ph\u1ea7n m\u1ec1m t\u00f9y ch\u1ec9nh tr\u00ean c\u00e1c h\u00ecnh \u1ea3nh ph\u00e2n ph\u1ed1i Linux m\u1eb7c \u0111\u1ecbnh c\u1ee7a Linode ho\u1eb7c tr\u00ean b\u1ea5t k\u1ef3&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/images\/\">h\u00ecnh \u1ea3nh t\u00f9y ch\u1ec9nh n\u00e0o \u0111\u00e3 l\u01b0u<\/a>&nbsp;c\u1ee7a b\u1ea1n . B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o StackScripts c\u1ee7a ri\u00eang m\u00ecnh, s\u1eed d\u1ee5ng StackScript do Linode t\u1ea1o ra ho\u1eb7c s\u1eed d\u1ee5ng Community StackScript.<\/p>\n<p>H\u01b0\u1edbng d\u1eabn n\u00e0y tr\u00ecnh b\u00e0y c\u00e1ch s\u1eed d\u1ee5ng Community StackScript \u0111\u1ec3 tri\u1ec3n khai WordPress tr\u00ean Compute Instance b\u1eb1ng Terraform.<\/p>\n<p class=\"has-background\" style=\"background-color:#f32a2a33\">Quan tr\u1ecdng: Th\u1ef1c hi\u1ec7n theo h\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd t\u1ea1o ra c\u00e1c ngu\u1ed3n t\u00e0i nguy\u00ean c\u00f3 th\u1ec3 thanh to\u00e1n tr\u00ean t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n. \u0110\u1ec3 tr\u00e1nh ti\u1ebfp t\u1ee5c thanh to\u00e1n cho c\u00e1c ngu\u1ed3n t\u00e0i nguy\u00ean n\u00e0y, h\u00e3y x\u00f3a ch\u00fang khi b\u1ea1n \u0111\u00e3 ho\u00e0n t\u1ea5t h\u01b0\u1edbng d\u1eabn.<\/p>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#before-you-begin\"><\/a><\/h2>\n<p>1.C\u00e0i \u0111\u1eb7t Terraform tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n b\u1eb1ng c\u00e1ch l\u00e0m theo ph\u1ea7n&nbsp;<em>C\u00e0i \u0111\u1eb7t Terraform<\/em>&nbsp;trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-build-your-infrastructure-using-terraform-and-linode\/#install-terraform\">S\u1eed d\u1ee5ng Terraform \u0111\u1ec3 cung c\u1ea5p m\u00f4i tr\u01b0\u1eddng Linode<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: <a href=\"https:\/\/github.com\/terraform-providers\/terraform-provider-linode\" target=\"_blank\" rel=\"noreferrer noopener\">Nh\u00e0 cung c\u1ea5p Linode c\u1ee7a Terraform<\/a>&nbsp;\u0111\u00e3 \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt v\u00e0 hi\u1ec7n y\u00eau c\u1ea7u Terraform phi\u00ean b\u1ea3n 0.12 tr\u1edf l\u00ean. \u0110\u1ec3 t\u00ecm hi\u1ec3u c\u00e1ch n\u00e2ng c\u1ea5p an to\u00e0n l\u00ean Terraform phi\u00ean b\u1ea3n 0.12 tr\u1edf l\u00ean, h\u00e3y xem&nbsp;<a href=\"https:\/\/www.terraform.io\/upgrade-guides\/0-12.html\" target=\"_blank\" rel=\"noreferrer noopener\">t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a Terraform<\/a>&nbsp;. Xem&nbsp;<a href=\"https:\/\/github.com\/hashicorp\/terraform\/blob\/v0.12.0\/CHANGELOG.md\" target=\"_blank\" rel=\"noreferrer noopener\">nh\u1eadt k\u00fd thay \u0111\u1ed5i c\u1ee7a Terraform v0.12<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft danh s\u00e1ch \u0111\u1ea7y \u0111\u1ee7 c\u00e1c t\u00ednh n\u0103ng m\u1edbi v\u00e0 ghi ch\u00fa v\u1ec1 s\u1ef1 kh\u00f4ng t\u01b0\u01a1ng th\u00edch c\u1ee7a phi\u00ean b\u1ea3n.<\/p>\n<p>2.Terraform y\u00eau c\u1ea7u m\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp API. L\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/api\/get-started\/#get-an-access-token\">B\u1eaft \u0111\u1ea7u v\u1edbi API Linode<\/a>&nbsp;\u0111\u1ec3 c\u00f3 \u0111\u01b0\u1ee3c m\u00e3 th\u00f4ng b\u00e1o.<\/p>\n<p>3.N\u1ebfu b\u1ea1n ch\u01b0a th\u1ef1c hi\u1ec7n,&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/networking\/dns-manager\/guides\/authoritative-name-servers\/\">h\u00e3y ch\u1ec9 \u0111\u1ecbnh m\u00e1y ch\u1ee7 t\u00ean c\u1ee7a Linode<\/a>&nbsp;cho t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n t\u1ea1i c\u01a1 quan \u0111\u0103ng k\u00fd t\u00ean mi\u1ec1n.<\/p>\n<p>4.Duy\u1ec7t&nbsp;<a href=\"https:\/\/www.linode.com\/stackscripts\/\" target=\"_blank\" rel=\"noreferrer noopener\">Th\u01b0 vi\u1ec7n StackScripts<\/a>&nbsp;hi\u1ec7n c\u00f3 \u0111\u1ec3 l\u00e0m quen v\u1edbi c\u00e1c t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 ho\u00e0n th\u00e0nh v\u1edbi StackScripts hi\u1ec7n c\u00f3.<\/p>\n<h2 id=\"create-a-terraform-configuration\">T\u1ea1o c\u1ea5u h\u00ecnh Terraform<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#create-a-terraform-configuration\"><\/a><\/h2>\n<p>Terraform \u0111\u1ecbnh ngh\u0129a c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng Linode c\u1ee7a b\u1ea1n b\u00ean trong c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh. Terraform g\u1ecdi c\u00e1c th\u00e0nh ph\u1ea7n c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng n\u00e0y l\u00e0&nbsp;<em>t\u00e0i nguy\u00ean<\/em>&nbsp;. Sau khi b\u1ea1n khai b\u00e1o c\u1ea5u h\u00ecnh Terraform c\u1ee7a m\u00ecnh, b\u1ea1n s\u1ebd&nbsp;<em>\u00e1p d\u1ee5ng<\/em>&nbsp;c\u1ea5u h\u00ecnh \u0111\u00f3, d\u1eabn \u0111\u1ebfn vi\u1ec7c t\u1ea1o c\u00e1c t\u00e0i nguy\u00ean \u0111\u00f3 tr\u00ean n\u1ec1n t\u1ea3ng Linode.<\/p>\n<h3 id=\"create-the-terraform-configuration-file\">T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh Terraform<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#create-the-terraform-configuration-file\"><\/a><\/h3>\n<p>1.\u0110\u1ea3m b\u1ea3o r\u1eb1ng b\u1ea1n \u0111ang \u1edf trong&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c.<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/terraform<\/code><\/pre>\n<p>2.S\u1eed d\u1ee5ng tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n \u01b0a th\u00edch c\u1ee7a b\u1ea1n, t\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh Terraform c\u00f3 t\u00ean&nbsp;<code>main.tf<\/code>\u0111\u1ec3 l\u01b0u tr\u1eef \u0111\u1ecbnh ngh\u0129a t\u00e0i nguy\u00ean c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>terraform {\n  required_providers {\n    linode = {\n      source = \"linode\/linode\"\n      version = \"1.26.0\"\n    }\n  }\n}\nprovider \"linode\" {\n    token = var.token\n}\n\nresource \"linode_sshkey\" \"my_wordpress_linode_ssh_key\" {\n    label = \"my_ssh_key\"\n    ssh_key = chomp(file(\"~\/.ssh\/id_rsa.pub\"))\n}\n\nresource \"random_string\" \"my_wordpress_linode_root_password\" {\n    length  = 32\n    special = true\n}\n\nresource \"linode_instance\" \"my_wordpress_linode\" {\n    image = var.image\n    label = var.label\n    region = var.region\n    type = var.type\n    authorized_keys = &#91; linode_sshkey.my_wordpress_linode_ssh_key.ssh_key ]\n    root_pass = random_string.my_wordpress_linode_root_password.result\n    stackscript_id = var.stackscript_id\n    stackscript_data = {\n      \"ssuser\" = var.stackscript_data&#91;\"ssuser\"]\n      \"hostname\" = var.stackscript_data&#91;\"hostname\"]\n      \"website\" = var.stackscript_data&#91;\"website\"]\n      \"dbuser\" = var.stackscript_data&#91;\"dbuser\"]\n      \"db_password\" = var.stackscript_data&#91;\"db_password\"]\n      \"sspassword\" = var.stackscript_data&#91;\"sspassword\"]\n      \"dbuser_password\" = var.stackscript_data&#91;\"dbuser_password\"]\n    }\n}\n\nresource \"linode_domain\" \"my_wordpress_domain\" {\n    domain = var.domain\n    soa_email = var.soa_email\n    type = \"master\"\n}\n\nresource \"linode_domain_record\" \"my_wordpress_domain_www_record\" {\n    domain_id = \"${linode_domain.my_wordpress_domain.id}\"\n    name = \"www\"\n    record_type = var.a_record\n    target =  \"${linode_instance.my_wordpress_linode.ip_address}\"\n}\n\nresource \"linode_domain_record\" \"my_wordpress_domain_apex_record\" {\n    domain_id = \"${linode_domain.my_wordpress_domain.id}\"\n    name = \"\"\n    record_type = var.a_record\n    target = \"${linode_instance.my_wordpress_linode.ip_address}\"\n}<\/code><\/pre>\n<ol>\n<li>T\u1ec7p c\u1ea5u h\u00ecnh Terraform s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/www.terraform.io\/docs\/configuration\/interpolation.html\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00fa ph\u00e1p n\u1ed9i suy<\/a>&nbsp;\u0111\u1ec3 tham chi\u1ebfu&nbsp;<a href=\"https:\/\/learn.hashicorp.com\/terraform\/getting-started\/variables.html\" target=\"_blank\" rel=\"noreferrer noopener\"><em>c\u00e1c bi\u1ebfn \u0111\u1ea7u v\u00e0o<\/em><\/a>&nbsp;c\u1ee7a Terraform , g\u1ecdi&nbsp;<a href=\"https:\/\/www.terraform.io\/docs\/configuration\/interpolation.html#built-in-functions\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00e1c h\u00e0m t\u00edch h\u1ee3p<\/a>&nbsp;c\u1ee7a Terraform v\u00e0 tham chi\u1ebfu c\u00e1c thu\u1ed9c t\u00ednh c\u1ee7a c\u00e1c t\u00e0i nguy\u00ean kh\u00e1c.C\u00e1c bi\u1ebfn v\u00e0 gi\u00e1 tr\u1ecb c\u1ee7a ch\u00fang s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o trong c\u00e1c t\u1ec7p ri\u00eang bi\u1ec7t sau n\u00e0y trong h\u01b0\u1edbng d\u1eabn n\u00e0y. S\u1eed d\u1ee5ng c\u00e1c t\u1ec7p ri\u00eang bi\u1ec7t \u0111\u1ec3 khai b\u00e1o bi\u1ebfn cho ph\u00e9p b\u1ea1n tr\u00e1nh m\u00e3 h\u00f3a c\u1ee9ng c\u00e1c gi\u00e1 tr\u1ecb v\u00e0o t\u00e0i nguy\u00ean c\u1ee7a m\u00ecnh. Chi\u1ebfn l\u01b0\u1ee3c n\u00e0y c\u00f3 th\u1ec3 gi\u00fap b\u1ea1n t\u00e1i s\u1eed d\u1ee5ng, chia s\u1ebb v\u00e0 ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u1ea5u h\u00ecnh Terraform c\u1ee7a m\u00ecnh.<\/li>\n<\/ol>\n<h3 id=\"examining-the-terraform-configuration\">Ki\u1ec3m tra c\u1ea5u h\u00ecnh Terraform<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#examining-the-terraform-configuration\"><\/a><\/h3>\n<p>Ch\u00fang ta h\u00e3y xem x\u00e9t k\u1ef9 h\u01a1n t\u1eebng kh\u1ed1i trong t\u1ec7p c\u1ea5u h\u00ecnh:<\/p>\n<p>1.Kh\u1ed5 th\u01a1 \u0111\u1ea7u ti\u00ean tuy\u00ean b\u1ed1 Linode l\u00e0&nbsp;<a href=\"https:\/\/www.terraform.io\/docs\/providers\/\" target=\"_blank\" rel=\"noreferrer noopener\">nh\u00e0 cung c\u1ea5p Terraform<\/a>&nbsp;s\u1ebd qu\u1ea3n l\u00fd v\u00f2ng \u0111\u1eddi c\u1ee7a b\u1ea5t k\u1ef3 t\u00e0i nguy\u00ean n\u00e0o \u0111\u01b0\u1ee3c khai b\u00e1o trong su\u1ed1t t\u1ec7p c\u1ea5u h\u00ecnh. Nh\u00e0 cung c\u1ea5p Linode y\u00eau c\u1ea7u m\u00e3 th\u00f4ng b\u00e1o Linode APIv4 c\u1ee7a b\u1ea1n \u0111\u1ec3 x\u00e1c th\u1ef1c:<\/p>\n<pre class=\"wp-block-code\"><code>provider \"linode\" {\n    token = var.token\n}<\/code><\/pre>\n<p>2.T\u00e0i nguy\u00ean ti\u1ebfp theo c\u1ea5u h\u00ecnh Kh\u00f3a SSH s\u1ebd \u0111\u01b0\u1ee3c t\u1ea3i l\u00ean Phi\u00ean b\u1ea3n m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n sau trong t\u1ec7p c\u1ea5u h\u00ecnh:<\/p>\n<pre class=\"wp-block-code\"><code>resource \"linode_sshkey\" \"my_wordpress_linode_ssh_key\" {\n    label = \"my_ssh_key\"\n    ssh_key = chomp(file(\"~\/.ssh\/id_rsa.pub\"))\n}<\/code><\/pre>\n<p><code>ssh_key = chomp(file(\"~\/.ssh\/id_rsa.pub\"))<\/code>s\u1eed d\u1ee5ng ch\u1ee9c n\u0103ng t\u00edch h\u1ee3p c\u1ee7a Terraform&nbsp;<code>file()<\/code>\u0111\u1ec3 cung c\u1ea5p \u0111\u01b0\u1eddng d\u1eabn t\u1ec7p c\u1ee5c b\u1ed9 \u0111\u1ebfn v\u1ecb tr\u00ed kh\u00f3a SSH c\u00f4ng khai. Ch\u1ee9c&nbsp;<code>chomp()<\/code>n\u0103ng t\u00edch h\u1ee3p n\u00e0y x\u00f3a c\u00e1c d\u00f2ng m\u1edbi theo sau kh\u1ecfi kh\u00f3a SSH.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u1ebfu b\u1ea1n ch\u01b0a c\u00f3 kh\u00f3a SSH, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc trong ph\u1ea7n&nbsp;<em>T\u1ea1o c\u1eb7p kh\u00f3a x\u00e1c th\u1ef1c<\/em>&nbsp;c\u1ee7a&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/#upload-ssh-key\">H\u01b0\u1edbng d\u1eabn b\u1ea3o m\u1eadt m\u00e1y ch\u1ee7<\/a>&nbsp;.<\/p>\n<p>3.T\u00e0i&nbsp;<code>random_string<\/code>nguy\u00ean c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o m\u1ed9t chu\u1ed7i ng\u1eabu nhi\u00ean g\u1ed3m 32 k\u00fd t\u1ef1.&nbsp;<code>linode_instance<\/code>T\u00e0i nguy\u00ean s\u1ebd s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 t\u1ea1o m\u1eadt kh\u1ea9u ng\u01b0\u1eddi d\u00f9ng root:<\/p>\n<pre class=\"wp-block-code\"><code>resource \"random_string\" \"my_wordpress_linode_root_password\" {\n    length  = 32\n    special = true\n}<\/code><\/pre>\n<p>4.T\u00e0i&nbsp;<code>linode_instance<\/code>nguy\u00ean t\u1ea1o ra m\u1ed9t Compute Instance v\u1edbi c\u00e1c c\u1ea5u h\u00ecnh \u0111\u00e3 khai b\u00e1o:<\/p>\n<pre class=\"wp-block-code\"><code>resource \"linode_instance\" \"my_wordpress_linode\" {\n    image = var.image\n    label = var.label\n    region = var.region\n    type = var.type\n    authorized_keys = &#91; linode_sshkey.my_wordpress_linode_ssh_key.ssh_key ]\n    root_pass = random_string.my_wordpress_linode_root_password.result\n    stackscript_id = var.stackscript_id\n    stackscript_data = {\n      \"ssuser\" = var.stackscript_data&#91;\"ssuser\"]\n      \"hostname\" = var.stackscript_data&#91;\"hostname\"]\n      \"website\" = var.stackscript_data&#91;\"website\"]\n      \"dbuser\" = var.stackscript_data&#91;\"dbuser\"]\n      \"db_password\" = var.stackscript_data&#91;\"db_password\"]\n      \"sspassword\" = var.stackscript_data&#91;\"sspassword\"]\n      \"dbuser_password\" = var.stackscript_data&#91;\"dbuser_password\"]\n    }\n}<\/code><\/pre>\n<ul>\n<li>\u0110\u1ed1i&nbsp;<code>authorized_keys<\/code>s\u1ed1 s\u1eed d\u1ee5ng kh\u00f3a c\u00f4ng khai SSH do&nbsp;<code>linode_sshkey<\/code>t\u00e0i nguy\u00ean cung c\u1ea5p trong kh\u1ed5 tr\u01b0\u1edbc. \u0110\u1ed1i s\u1ed1 n\u00e0y mong \u0111\u1ee3i m\u1ed9t gi\u00e1 tr\u1ecb c\u00f3 ki\u1ec3u&nbsp;<code>list<\/code>, do \u0111\u00f3 gi\u00e1 tr\u1ecb ph\u1ea3i \u0111\u01b0\u1ee3c \u0111\u1eb7t trong d\u1ea5u ngo\u1eb7c.<\/li>\n<li>\u0110\u1ed1i&nbsp;<code>root_pass<\/code>s\u1ed1 \u0111\u01b0\u1ee3c g\u00e1n cho gi\u00e1 tr\u1ecb c\u1ee7a&nbsp;<code>random_string<\/code>t\u00e0i nguy\u00ean \u0111\u00e3 khai b\u00e1o tr\u01b0\u1edbc \u0111\u00f3.<\/li>\n<li>\u0110\u1ec3 s\u1eed d\u1ee5ng StackScript hi\u1ec7n c\u00f3, b\u1ea1n ph\u1ea3i s\u1eed d\u1ee5ng&nbsp;<code>stackscript_id<\/code>\u0111\u1ed1i s\u1ed1 v\u00e0 cung c\u1ea5p ID h\u1ee3p l\u1ec7 l\u00e0m gi\u00e1 tr\u1ecb. M\u1ed7i StackScript \u0111\u01b0\u1ee3c g\u00e1n m\u1ed9t ID duy nh\u1ea5t khi t\u1ea1o. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/cloud.linode.com\/stackscripts\/998743\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress tr\u00ean Ubuntu 20.04<\/a>&nbsp;StackScript do ng\u01b0\u1eddi d\u00f9ng Linode&nbsp;<a href=\"https:\/\/cloud.linode.com\/stackscripts\/community?query=username%3Ahmorris\" target=\"_blank\" rel=\"noreferrer noopener\">hmorris<\/a>&nbsp;\u0111i\u1ec1u ch\u1ec9nh . ID c\u1ee7a StackScript n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c g\u00e1n cho m\u1ed9t bi\u1ebfn Terraform sau trong h\u01b0\u1edbng d\u1eabn n\u00e0y.StackScripts h\u1ed7 tr\u1ee3 d\u1eef li\u1ec7u do ng\u01b0\u1eddi d\u00f9ng x\u00e1c \u0111\u1ecbnh. StackScript c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng th\u1ebb&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/stackscripts\/guides\/write-a-custom-script\/#declare-user-defined-fields-udfs\"><code>UDF<\/code>\u0111\u1ec3<\/a>&nbsp;t\u1ea1o bi\u1ebfn c\u00f3 gi\u00e1 tr\u1ecb ph\u1ea3i do ng\u01b0\u1eddi d\u00f9ng c\u1ee7a t\u1eadp l\u1ec7nh cung c\u1ea5p. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u00f9y ch\u1ec9nh h\u00e0nh vi c\u1ee7a StackScript tr\u00ean c\u01a1 s\u1edf m\u1ed7i l\u1ea7n tri\u1ec3n khai. B\u1ea5t k\u1ef3&nbsp;<code>UDF<\/code>bi\u1ebfn b\u1eaft bu\u1ed9c n\u00e0o c\u0169ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh b\u1eb1ng&nbsp;<code>stackscript_data<\/code>\u0111\u1ed1i s\u1ed1.StackScript ch\u1ecbu tr\u00e1ch nhi\u1ec7m c\u00e0i \u0111\u1eb7t WordPress tr\u00ean Compute Instance c\u1ee7a b\u1ea1n c\u00f9ng v\u1edbi t\u1ea5t c\u1ea3 c\u00e1c y\u00eau c\u1ea7u kh\u00e1c, ch\u1eb3ng h\u1ea1n nh\u01b0 c\u00e0i \u0111\u1eb7t Apache, c\u1ea5u h\u00ecnh Apache, c\u1ea5u h\u00ecnh t\u1ec7p Virtual Hosts v\u00e0 c\u00e0i \u0111\u1eb7t MySQL.<\/li>\n<li>C\u00e1c \u0111\u1ed1i s\u1ed1 kh\u00e1c \u0111\u01b0\u1ee3c g\u00e1n gi\u00e1 tr\u1ecb b\u1edfi c\u00e1c bi\u1ebfn Terraform s\u1ebd \u0111\u01b0\u1ee3c khai b\u00e1o sau trong h\u01b0\u1edbng d\u1eabn n\u00e0y.<\/li>\n<\/ul>\n<p>5.\u0110\u1ec3 ho\u00e0n t\u1ea5t c\u1ea5u h\u00ecnh trang web WordPress c\u1ee7a b\u1ea1n, b\u1ea1n c\u1ea7n t\u1ea1o m\u1ed9t t\u00ean mi\u1ec1n v\u00e0 c\u00e1c b\u1ea3n ghi t\u00ean mi\u1ec1n t\u01b0\u01a1ng \u1ee9ng cho trang web c\u1ee7a b\u1ea1n. C\u00e1c t\u00e0i nguy\u00ean&nbsp;<code>linode_domain<\/code>v\u00e0&nbsp;<code>linode_domain_record<\/code>x\u1eed l\u00fd c\u00e1c c\u1ea5u h\u00ecnh n\u00e0y:<\/p>\n<pre class=\"wp-block-code\"><code>resource \"linode_domain\" \"my_wordpress_domain\" {\n    domain = var.domain\n    soa_email = var.soa_email\n    type = \"master\"\n}\n\nresource \"linode_domain_record\" \"my_wordpress_domain_www_record\" {\n    domain_id = \"${linode_domain.my_wordpress_domain.id}\"\n    name = \"www\"\n    record_type = var.a_record\n    target =  \"${linode_instance.my_wordpress_linode.ip_address}\"\n}\n\nresource \"linode_domain_record\" \"my_wordpress_domain_apex_record\" {\n    domain_id = \"${linode_domain.my_wordpress_domain.id}\"\n    name = \"\"\n    record_type = var.a_record\n    target = \"${linode_instance.my_wordpress_linode.ip_address}\"\n}<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u1ebfu b\u1ea1n kh\u00f4ng quen v\u1edbi H\u1ec7 th\u1ed1ng t\u00ean mi\u1ec1n (DNS), h\u00e3y xem l\u1ea1i h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/dns-overview\/\">Gi\u1edbi thi\u1ec7u v\u1ec1 B\u1ea3n ghi DNS<\/a>&nbsp;.<\/p>\n<h3 id=\"define-the-input-variables\">X\u00e1c \u0111\u1ecbnh c\u00e1c bi\u1ebfn \u0111\u1ea7u v\u00e0o<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#define-the-input-variables\"><\/a><\/h3>\n<p>Trong&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c, t\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean&nbsp;<code>variables.tf<\/code>. T\u1ec7p n\u00e0y s\u1ebd \u0111\u1ecbnh ngh\u0129a t\u1ea5t c\u1ea3 c\u00e1c bi\u1ebfn \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong t\u1ec7p&nbsp;<code>main.tf<\/code>\u1edf ph\u1ea7n tr\u01b0\u1edbc. C\u00e1c gi\u00e1 tr\u1ecb cho c\u00e1c bi\u1ebfn n\u00e0y (ngo\u00e0i c\u00e1c gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh c\u1ee7a ch\u00fang) s\u1ebd \u0111\u01b0\u1ee3c g\u00e1n trong m\u1ed9t t\u1ec7p kh\u00e1c:<\/p>\n<pre class=\"wp-block-code\"><code>variable \"token\" {\n  description = \"Linode API Personal Access Token\"\n}\n\nvariable \"image\" {\n  description = \"Image to use for Linode instance\"\n  default = \"linode\/ubuntu20.04\"\n}\n\nvariable \"label\" {\n  description = \"The Linode's label is for display purposes only.\"\n  default = \"default-linode\"\n}\n\nvariable \"region\" {\n  description = \"The region where your Linode will be located.\"\n  default = \"us-east\"\n}\n\nvariable \"type\" {\n  description = \"Your Linode's plan type.\"\n  default = \"g6-standard-1\"\n}\n\nvariable \"stackscript_id\" {\n  description = \"StackScript ID\"\n}\n\nvariable \"stackscript_data\" {\n  description = \"Map of required StackScript UDF data.\"\n  type = \"map\"\n}\n\nvariable \"domain\" {\n  description = \"The domain this domain represents.\"\n}\n\nvariable \"soa_email\" {\n  description = \"Start of Authority email address. This is required for master domains.\"\n}\n\nvariable \"a_record\" {\n  description = \"The type of DNS record. For example, `A` records associate a domain name with an IPv4 address.\"\n  default = \"A\"\n}<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u00ean bao g\u1ed3m m\u1ed9t&nbsp;<code>description<\/code>thu\u1ed9c t\u00ednh cho m\u1ed7i bi\u1ebfn \u0111\u1ea7u v\u00e0o \u0111\u1ec3 gi\u00fap ghi l\u1ea1i c\u00e1ch s\u1eed d\u1ee5ng c\u1ea5u h\u00ecnh c\u1ee7a b\u1ea1n. \u0110i\u1ec1u n\u00e0y s\u1ebd gi\u00fap b\u1ea5t k\u1ef3 ai kh\u00e1c s\u1eed d\u1ee5ng c\u1ea5u h\u00ecnh Terraform n\u00e0y d\u1ec5 d\u00e0ng h\u01a1n.<\/p>\n<p>M\u1ed7i bi\u1ebfn c\u00f3 th\u1ec3 ch\u1ee9a m\u1ed9t&nbsp;<code>default<\/code>gi\u00e1 tr\u1ecb.&nbsp;<code>default<\/code>Gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng n\u1ebfu kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb n\u00e0o kh\u00e1c \u0111\u01b0\u1ee3c cung c\u1ea5p. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 khai b\u00e1o a&nbsp;<code>type<\/code>cho m\u1ed7i bi\u1ebfn. N\u1ebfu kh\u00f4ng cung c\u1ea5p ki\u1ec3u n\u00e0o, bi\u1ebfn s\u1ebd m\u1eb7c \u0111\u1ecbnh l\u00e0&nbsp;<code>type = \"string\"<\/code>.<\/p>\n<p>Bi\u1ebfn&nbsp;<code>stackscript_data<\/code>c\u00f3 ki\u1ec3u&nbsp;<code>map<\/code>. \u0110i\u1ec1u n\u00e0y s\u1ebd cho ph\u00e9p b\u1ea1n cung c\u1ea5p gi\u00e1 tr\u1ecb cho nhi\u1ec1u&nbsp;<code>UDF<\/code>bi\u1ebfn t\u00f9y theo y\u00eau c\u1ea7u c\u1ee7a StackScript.<\/p>\n<h3 id=\"assign-values-to-the-input-variables\">G\u00e1n gi\u00e1 tr\u1ecb cho c\u00e1c bi\u1ebfn \u0111\u1ea7u v\u00e0o<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#assign-values-to-the-input-variables\"><\/a><\/h3>\n<p>Terraform cho ph\u00e9p b\u1ea1n g\u00e1n bi\u1ebfn theo nhi\u1ec1u c\u00e1ch. V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 g\u00e1n gi\u00e1 tr\u1ecb bi\u1ebfn th\u00f4ng qua d\u00f2ng l\u1ec7nh khi ch\u1ea1y&nbsp;<code>terraform apply<\/code>. \u0110\u1ec3 duy tr\u00ec gi\u00e1 tr\u1ecb bi\u1ebfn, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 t\u1ea1o t\u1ec7p \u0111\u1ec3 l\u01b0u t\u1ea5t c\u1ea3 c\u00e1c gi\u00e1 tr\u1ecb c\u1ee7a m\u00ecnh.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: C\u00f3 m\u1ed9t s\u1ed1 t\u00f9y ch\u1ecdn kh\u00e1c c\u00f3 s\u1eb5n \u0111\u1ec3 qu\u1ea3n l\u00fd b\u00ed m\u1eadt v\u1edbi Terraform. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 \u0111i\u1ec1u n\u00e0y, h\u00e3y xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/secrets-management-with-terraform\/\">Qu\u1ea3n l\u00fd b\u00ed m\u1eadt v\u1edbi Terraform<\/a>&nbsp;.<\/p>\n<p>Terraform s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea3i b\u1ea5t k\u1ef3 t\u1ec7p n\u00e0o \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean&nbsp;<code>terraform.tfvars<\/code>v\u00e0 s\u1eed d\u1ee5ng n\u1ed9i dung c\u1ee7a t\u1ec7p \u0111\u00f3 \u0111\u1ec3 \u0111i\u1ec1n v\u00e0o c\u00e1c bi\u1ebfn. Tuy nhi\u00ean, b\u1ea1n n\u00ean t\u00e1ch ri\u00eang b\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb nh\u1ea1y c\u1ea3m n\u00e0o, nh\u01b0 m\u1eadt kh\u1ea9u v\u00e0 m\u00e3 th\u00f4ng b\u00e1o, v\u00e0o t\u1ec7p ri\u00eang c\u1ee7a ch\u00fang. Gi\u1eef t\u1ec7p nh\u1ea1y c\u1ea3m n\u00e0y ngo\u00e0i t\u1ea7m ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n.<\/p>\n<p>1.T\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean&nbsp;<code>terraform.tfvars<\/code>trong&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c c\u1ee7a b\u1ea1n \u0111\u1ec3 l\u01b0u tr\u1eef t\u1ea5t c\u1ea3 c\u00e1c gi\u00e1 tr\u1ecb kh\u00f4ng nh\u1ea1y c\u1ea3m:<\/p>\n<pre class=\"wp-block-code\"><code>label = \"wp-linode\"\nstackscript_id = \"998743\"\ndomain = \"example.com\"\nsoa_email = \"user@email.com\"<\/code><\/pre>\n<p>2.T\u1ea1o t\u00ean t\u1ec7p&nbsp;<code>secrets.tfvars<\/code>trong&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c c\u1ee7a b\u1ea1n \u0111\u1ec3 l\u01b0u tr\u1eef m\u1ecdi gi\u00e1 tr\u1ecb nh\u1ea1y c\u1ea3m:<\/p>\n<pre class=\"wp-block-code\"><code>token = \"my-linode-api4-token\"\nstackscript_data = {\n  \"ssuser\" = \"username\"\n  \"hostname\" = \"wordpress\"\n  \"website\" = \"example.com\"\n  \"dbuser\" = \"wpuser\"\n  \"sspassword\" = \"my-secure-password\"\n  \"db_password\" = \"another-secure-password\"\n  \"dbuser_password\" = \"a-third-secure-password\"\n}<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Trong Terraform 0.12, c\u00e1c bi\u1ebfn c\u00f3 gi\u00e1 tr\u1ecb map v\u00e0 object s\u1ebd s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb cu\u1ed1i c\u00f9ng \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y v\u00e0 ghi \u0111\u00e8 c\u00e1c gi\u00e1 tr\u1ecb tr\u01b0\u1edbc \u0111\u00f3. \u0110i\u1ec1u n\u00e0y kh\u00e1c v\u1edbi c\u00e1c phi\u00ean b\u1ea3n tr\u01b0\u1edbc c\u1ee7a Terraform, s\u1ebd h\u1ee3p nh\u1ea5t c\u00e1c gi\u00e1 tr\u1ecb map thay v\u00ec ghi \u0111\u00e8 ch\u00fang. V\u00ec l\u00fd do n\u00e0y,&nbsp;<code>stackscript_data<\/code>map v\u00e0 c\u00e1c gi\u00e1 tr\u1ecb c\u1ee7a n\u00f3 \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a trong m\u1ed9t t\u1ec7p \u0111\u1ecbnh ngh\u0129a bi\u1ebfn duy nh\u1ea5t.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: S\u1ebd r\u1ea5t h\u1eefu \u00edch khi tham kh\u1ea3o t\u00e0i li\u1ec7u&nbsp;<a href=\"https:\/\/www.terraform.io\/docs\/providers\/linode\/\" target=\"_blank\" rel=\"noreferrer noopener\">v\u1ec1 nh\u00e0 cung c\u1ea5p Linode<\/a>&nbsp;c\u1ee7a Terraform v\u00e0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/api\/\">t\u00e0i li\u1ec7u Linode APIv4<\/a>&nbsp;\u0111\u1ec3 h\u1ed7 tr\u1ee3 x\u00e1c \u0111\u1ecbnh gi\u00e1 tr\u1ecb ph\u00f9 h\u1ee3p cho t\u00e0i nguy\u00ean Linode.<\/p>\n<ol>\n<li>Thay th\u1ebf c\u00e1c gi\u00e1 tr\u1ecb sau v\u00e0o&nbsp;<code>.tfvars<\/code>t\u1ec7p m\u1edbi c\u1ee7a b\u1ea1n:\n<ul>\n<li><code>token<\/code>n\u00ean \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng m\u00e3 th\u00f4ng b\u00e1o APIv4 c\u1ee7a t\u00e0i kho\u1ea3n Linode c\u1ee7a b\u1ea1n.<\/li>\n<li>V\u00ec m\u1ee5c \u0111\u00edch b\u1ea3o m\u1eadt, StackScript s\u1ebd t\u1ea1o m\u1ed9t ng\u01b0\u1eddi d\u00f9ng Linux gi\u1edbi h\u1ea1n tr\u00ean Compute Instance c\u1ee7a b\u1ea1n.&nbsp;<code>ssuser<\/code>n\u00ean \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng mong mu\u1ed1n c\u1ee7a b\u1ea1n cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y.<\/li>\n<li><code>sspassword<\/code>,&nbsp;<code>db_password<\/code>, v\u00e0&nbsp;<code>dbuser_password<\/code>n\u00ean thay th\u1ebf b\u1eb1ng m\u1eadt kh\u1ea9u an to\u00e0n c\u1ee7a ri\u00eang b\u1ea1n.<\/li>\n<li><code>domain<\/code>n\u00ean \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng \u0111\u1ecba ch\u1ec9 t\u00ean mi\u1ec1n trang web WordPress c\u1ee7a b\u1ea1n.<\/li>\n<li><code>soa_email<\/code>ph\u1ea3i l\u00e0 \u0111\u1ecba ch\u1ec9 email b\u1ea1n mu\u1ed1n s\u1eed d\u1ee5ng l\u00e0m \u0111\u1ecba ch\u1ec9 email&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/dns-overview\/#soa\">B\u1eaft \u0111\u1ea7u th\u1ea9m quy\u1ec1n<\/a>&nbsp;c\u1ee7a m\u00ecnh .<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2 id=\"initialize-plan-and-apply-the-terraform-configuration\">Kh\u1edfi t\u1ea1o, l\u1eadp k\u1ebf ho\u1ea1ch v\u00e0 \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh Terraform<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#initialize-plan-and-apply-the-terraform-configuration\"><\/a><\/h2>\n<p>C\u1ea5u h\u00ecnh Terraform c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c ghi l\u1ea1i, nh\u01b0ng b\u1ea1n v\u1eabn ch\u01b0a y\u00eau c\u1ea7u Terraform t\u1ea1o t\u00e0i nguy\u00ean. \u0110\u1ec3 th\u1ef1c hi\u1ec7n vi\u1ec7c n\u00e0y, b\u1ea1n s\u1ebd g\u1ecdi l\u1ec7nh t\u1eeb CLI c\u1ee7a Terraform.<\/p>\n<h3 id=\"initialize\">Kh\u1edfi t\u1ea1o<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#initialize\"><\/a><\/h3>\n<p>B\u1ea5t c\u1ee9 khi n\u00e0o m\u1ed9t nh\u00e0 cung c\u1ea5p m\u1edbi \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u1ea5u h\u00ecnh Terraform, n\u00f3 ph\u1ea3i \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o tr\u01b0\u1edbc khi b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o t\u00e0i nguy\u00ean v\u1edbi n\u00f3. Qu\u00e1 tr\u00ecnh kh\u1edfi t\u1ea1o t\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t plugin c\u1ee7a nh\u00e0 cung c\u1ea5p v\u00e0 th\u1ef1c hi\u1ec7n b\u1ea5t k\u1ef3 b\u01b0\u1edbc n\u00e0o kh\u00e1c c\u1ea7n thi\u1ebft \u0111\u1ec3 chu\u1ea9n b\u1ecb cho vi\u1ec7c s\u1eed d\u1ee5ng n\u00f3.<\/p>\n<p>\u0110i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c trong terminal c\u1ee7a b\u1ea1n v\u00e0 ch\u1ea1y:<\/p>\n<pre class=\"wp-block-code\"><code>terraform init<\/code><\/pre>\n<p>B\u1ea1n s\u1ebd th\u1ea5y m\u1ed9t th\u00f4ng b\u00e1o x\u00e1c nh\u1eadn r\u1eb1ng plugin c\u1ee7a nh\u00e0 cung c\u1ea5p Linode \u0111\u00e3 \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o th\u00e0nh c\u00f4ng.<\/p>\n<h3 id=\"plan\">K\u1ebf ho\u1ea1ch<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#plan\"><\/a><\/h3>\n<p>C\u00f3 th\u1ec3 h\u1eefu \u00edch khi xem k\u1ebf ho\u1ea1ch th\u1ef1c hi\u1ec7n c\u1ea5u h\u00ecnh c\u1ee7a b\u1ea1n tr\u01b0\u1edbc khi th\u1ef1c s\u1ef1 cam k\u1ebft nh\u1eefng thay \u0111\u1ed5i \u0111\u00f3 v\u00e0o c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng c\u1ee7a b\u1ea1n. Terraform bao g\u1ed3m m\u1ed9t&nbsp;<code>plan<\/code>l\u1ec7nh cho m\u1ee5c \u0111\u00edch n\u00e0y. Ch\u1ea1y l\u1ec7nh n\u00e0y t\u1eeb&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>terraform plan \\\n-var-file<strong>=<\/strong>\"secrets.tfvars\" \\\n-var-file<strong>=<\/strong>\"terraform.tfvars\"<\/code><\/pre>\n<p><code>plan<\/code>s\u1ebd kh\u00f4ng th\u1ef1c hi\u1ec7n b\u1ea5t k\u1ef3 h\u00e0nh \u0111\u1ed9ng n\u00e0o ho\u1eb7c th\u1ef1c hi\u1ec7n b\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o tr\u00ean t\u00e0i kho\u1ea3n Linode c\u1ee7a b\u1ea1n. Thay v\u00e0o \u0111\u00f3, m\u1ed9t ph\u00e2n t\u00edch \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh h\u00e0nh \u0111\u1ed9ng n\u00e0o (t\u1ee9c l\u00e0 t\u1ea1o, x\u00f3a ho\u1eb7c s\u1eeda \u0111\u1ed5i t\u00e0i nguy\u00ean Linode) l\u00e0 c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c tr\u1ea1ng th\u00e1i \u0111\u01b0\u1ee3c m\u00f4 t\u1ea3 trong c\u1ea5u h\u00ecnh c\u1ee7a b\u1ea1n.<\/p>\n<h3 id=\"apply\">\u00c1p d\u1ee5ng<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#apply\"><\/a><\/h3>\n<p>B\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 s\u1eb5n s\u00e0ng \u0111\u1ec3 t\u1ea1o c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh trong&nbsp;<code>main.tf<\/code>t\u1ec7p c\u1ea5u h\u00ecnh c\u1ee7a m\u00ecnh:<\/p>\n<ol>\n<li>Ch\u1ea1y l\u1ec7nh Terraform&nbsp;<code>apply<\/code>t\u1eeb&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c:<\/li>\n<\/ol>\n<pre class=\"wp-block-code\"><code>terraform apply \\\n-var-file=\"secrets.tfvars\" \\\n-var-file=\"terraform.tfvars\"<\/code><\/pre>\n<p>V\u00ec b\u1ea1n \u0111ang s\u1eed d\u1ee5ng nhi\u1ec1u t\u1ec7p gi\u00e1 tr\u1ecb bi\u1ebfn, b\u1ea1n ph\u1ea3i bao g\u1ed3m t\u1eebng t\u1ec7p ri\u00eang l\u1ebb b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>var-file<\/code>\u0111\u1ed1i s\u1ed1. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c nh\u1eafc x\u00e1c nh\u1eadn h\u00e0nh&nbsp;<code>apply<\/code>\u0111\u1ed9ng. Nh\u1eadp&nbsp;<em>yes<\/em>&nbsp;v\u00e0 nh\u1ea5n&nbsp;<strong>enter<\/strong>&nbsp;.<\/p>\n<p>2.Terraform s\u1ebd b\u1eaft \u0111\u1ea7u t\u1ea1o c\u00e1c t\u00e0i nguy\u00ean b\u1ea1n \u0111\u00e3 x\u00e1c \u0111\u1ecbnh trong h\u01b0\u1edbng d\u1eabn n\u00e0y. Qu\u00e1 tr\u00ecnh n\u00e0y s\u1ebd m\u1ea5t v\u00e0i ph\u00fat \u0111\u1ec3 ho\u00e0n t\u1ea5t. Khi c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng th\u00e0nh c\u00f4ng, b\u1ea1n s\u1ebd th\u1ea5y k\u1ebft qu\u1ea3 t\u01b0\u01a1ng t\u1ef1:<\/p>\n<pre class=\"wp-block-code\"><code>Apply complete! Resources: 6 added, 0 changed, 0 destroyed.\n<\/code><\/pre>\n<p>3.\u0110i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn t\u00ean mi\u1ec1n c\u1ee7a trang WordPress c\u1ee7a b\u1ea1n v\u00e0 x\u00e1c minh r\u1eb1ng trang web \u0111\u00e3 t\u1ea3i. B\u1ea1n c\u00f3 th\u1ec3 ph\u1ea3i \u0111\u1ee3i th\u00eam v\u00e0i ph\u00fat sau khi l\u1ec7nh&nbsp;<code>terraform apply<\/code>tr\u1ea3 v\u1ec1, v\u00ec StackScript m\u1ea5t th\u1eddi gian \u0111\u1ec3 c\u00e0i \u0111\u1eb7t WordPress. Ngo\u00e0i ra, c\u00f3 th\u1ec3 m\u1ea5t m\u1ed9t th\u1eddi gian \u0111\u1ec3 t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n thay \u0111\u1ed5i \u0111\u01b0\u1ee3c lan truy\u1ec1n:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/wp-install_hu178d055a96642827722e3206898696af_314558_3358x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"C\u00e0i \u0111\u1eb7t WordPress\"><\/p>\n<p>4.Ho\u00e0n t\u1ea5t c\u00e1c b\u01b0\u1edbc c\u1ea5u h\u00ecnh WordPress c\u00f2n l\u1ea1i theo l\u1eddi nh\u1eafc.<\/p>\n<h2 id=\"optional-destroy-the-linode-resources\">(T\u00f9y ch\u1ecdn) H\u1ee7y t\u00e0i nguy\u00ean Linode<a href=\"https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/#optional-destroy-the-linode-resources\"><\/a><\/h2>\n<p>N\u1ebfu b\u1ea1n kh\u00f4ng mu\u1ed1n ti\u1ebfp t\u1ee5c s\u1eed d\u1ee5ng c\u00e1c t\u00e0i nguy\u00ean do Terraform t\u1ea1o ra trong h\u01b0\u1edbng d\u1eabn n\u00e0y, h\u00e3y ch\u1ea1y&nbsp;<code>destroy<\/code>l\u1ec7nh t\u1eeb&nbsp;<code>terraform<\/code>th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>terraform destroy \\\n-var-file<strong>=<\/strong>\"secrets.tfvars\" \\\n-var-file<strong>=<\/strong>\"terraform.tfvars\"<\/code><\/pre>\n<p>Terraform s\u1ebd nh\u1eafc b\u1ea1n x\u00e1c nh\u1eadn h\u00e0nh \u0111\u1ed9ng n\u00e0y. Nh\u1eadp&nbsp;<em>yes<\/em>&nbsp;\u0111\u1ec3 ti\u1ebfp t\u1ee5c.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.terraform.io\/docs\/providers\/linode\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Nh\u00e0 cung c\u1ea5p Terraform Linode<\/a><\/li>\n<li><a href=\"https:\/\/www.terraform.io\/intro\/getting-started\/variables.html\" target=\"_blank\" rel=\"noreferrer noopener\">Bi\u1ebfn \u0111\u1ea7u v\u00e0o Terraform<\/a><\/li>\n<\/ul>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/deploy-a-wordpress-site-using-terraform-and-linode-stackscripts\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nh\u00e0 cung c\u1ea5p Terraform c\u1ee7a Linode h\u1ed7 tr\u1ee3&nbsp;StackScripts&nbsp;. StackScripts cho ph\u00e9p b\u1ea1n t\u1ef1 \u0111\u1ed9ng tri\u1ec3n khai ph\u1ea7n m\u1ec1m t\u00f9y ch\u1ec9nh tr\u00ean c\u00e1c h\u00ecnh \u1ea3nh ph\u00e2n ph\u1ed1i Linux m\u1eb7c \u0111\u1ecbnh c\u1ee7a Linode ho\u1eb7c tr\u00ean b\u1ea5t k\u1ef3&nbsp;h\u00ecnh \u1ea3nh t\u00f9y ch\u1ec9nh n\u00e0o \u0111\u00e3 l\u01b0u&nbsp;c\u1ee7a b\u1ea1n . B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o StackScripts c\u1ee7a ri\u00eang m\u00ecnh, s\u1eed d\u1ee5ng StackScript do<\/p>\n","protected":false},"author":1,"featured_media":36201,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[126],"tags":[],"class_list":["post-35014","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-terraform"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35014","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=35014"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35014\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36201"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=35014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=35014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=35014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}