aws_sdk_opsworks/operation/create_stack/
_create_stack_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateStackInput {
6    /// <p>The stack name. Stack names can be a maximum of 64 characters.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>The stack's Amazon Web Services Region, such as <code>ap-south-1</code>. For more information about Amazon Web Services Regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>.</p><note>
9    /// <p>In the CLI, this API maps to the <code>--stack-region</code> parameter. If the <code>--stack-region</code> parameter and the CLI common parameter <code>--region</code> are set to the same value, the stack uses a <i>regional</i> endpoint. If the <code>--stack-region</code> parameter is not set, but the CLI <code>--region</code> parameter is, this also results in a stack with a <i>regional</i> endpoint. However, if the <code>--region</code> parameter is set to <code>us-east-1</code>, and the <code>--stack-region</code> parameter is set to one of the following, then the stack uses a legacy or <i>classic</i> region: <code>us-west-1, us-west-2, sa-east-1, eu-central-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2</code>. In this case, the actual API endpoint of the stack is in <code>us-east-1</code>. Only the preceding regions are supported as classic regions in the <code>us-east-1</code> API endpoint. Because it is a best practice to choose the regional endpoint that is closest to where you manage Amazon Web Services, we recommend that you use regional endpoints for new stacks. The CLI common <code>--region</code> parameter always specifies a regional API endpoint; it cannot be used to specify a classic OpsWorks Stacks region.</p>
10    /// </note>
11    pub region: ::std::option::Option<::std::string::String>,
12    /// <p>The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.</p>
13    /// <ul>
14    /// <li>
15    /// <p>If your account supports EC2-Classic, the default value is <code>no VPC</code>.</p></li>
16    /// <li>
17    /// <p>If your account does not support EC2-Classic, the default value is the default VPC for the specified region.</p></li>
18    /// </ul>
19    /// <p>If the VPC ID corresponds to a default VPC and you have specified either the <code>DefaultAvailabilityZone</code> or the <code>DefaultSubnetId</code> parameter only, OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.</p>
20    /// <p>If you specify a nondefault VPC ID, note the following:</p>
21    /// <ul>
22    /// <li>
23    /// <p>It must belong to a VPC in your account that is in the specified region.</p></li>
24    /// <li>
25    /// <p>You must specify a value for <code>DefaultSubnetId</code>.</p></li>
26    /// </ul>
27    /// <p>For more information about how to use OpsWorks Stacks with a VPC, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html">Running a Stack in a VPC</a>. For more information about default VPC and EC2-Classic, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported Platforms</a>.</p>
28    pub vpc_id: ::std::option::Option<::std::string::String>,
29    /// <p>One or more user-defined key-value pairs to be added to the stack attributes.</p>
30    pub attributes: ::std::option::Option<::std::collections::HashMap<crate::types::StackAttributesKeys, ::std::string::String>>,
31    /// <p>The stack's IAM role, which allows OpsWorks Stacks to work with Amazon Web Services resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
32    pub service_role_arn: ::std::option::Option<::std::string::String>,
33    /// <p>The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
34    pub default_instance_profile_arn: ::std::option::Option<::std::string::String>,
35    /// <p>The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.</p>
36    /// <ul>
37    /// <li>
38    /// <p>A supported Linux operating system: An Amazon Linux version, such as <code>Amazon Linux 2</code>, <code>Amazon Linux 2018.03</code>, <code>Amazon Linux 2017.09</code>, <code>Amazon Linux 2017.03</code>, <code>Amazon Linux 2016.09</code>, <code>Amazon Linux 2016.03</code>, <code>Amazon Linux 2015.09</code>, or <code>Amazon Linux 2015.03</code>.</p></li>
39    /// <li>
40    /// <p>A supported Ubuntu operating system, such as <code>Ubuntu 18.04 LTS</code>, <code>Ubuntu 16.04 LTS</code>, <code>Ubuntu 14.04 LTS</code>, or <code>Ubuntu 12.04 LTS</code>.</p></li>
41    /// <li>
42    /// <p><code>CentOS Linux 7</code></p></li>
43    /// <li>
44    /// <p><code>Red Hat Enterprise Linux 7</code></p></li>
45    /// <li>
46    /// <p>A supported Windows operating system, such as <code>Microsoft Windows Server 2012 R2 Base</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Express</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Standard</code>, or <code>Microsoft Windows Server 2012 R2 with SQL Server Web</code>.</p></li>
47    /// <li>
48    /// <p>A custom AMI: <code>Custom</code>. You specify the custom AMI you want to use when you create instances. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html"> Using Custom AMIs</a>.</p></li>
49    /// </ul>
50    /// <p>The default option is the current Amazon Linux version. Not all operating systems are supported with all versions of Chef. For more information about supported operating systems, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html">OpsWorks Stacks Operating Systems</a>.</p>
51    pub default_os: ::std::option::Option<::std::string::String>,
52    /// <p>The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, <code>HostnameTheme</code> is set to <code>Layer_Dependent</code>, which creates host names by appending integers to the layer's short name. The other themes are:</p>
53    /// <ul>
54    /// <li>
55    /// <p><code>Baked_Goods</code></p></li>
56    /// <li>
57    /// <p><code>Clouds</code></p></li>
58    /// <li>
59    /// <p><code>Europe_Cities</code></p></li>
60    /// <li>
61    /// <p><code>Fruits</code></p></li>
62    /// <li>
63    /// <p><code>Greek_Deities_and_Titans</code></p></li>
64    /// <li>
65    /// <p><code>Legendary_creatures_from_Japan</code></p></li>
66    /// <li>
67    /// <p><code>Planets_and_Moons</code></p></li>
68    /// <li>
69    /// <p><code>Roman_Deities</code></p></li>
70    /// <li>
71    /// <p><code>Scottish_Islands</code></p></li>
72    /// <li>
73    /// <p><code>US_Cities</code></p></li>
74    /// <li>
75    /// <p><code>Wild_Cats</code></p></li>
76    /// </ul>
77    /// <p>To obtain a generated host name, call <code>GetHostNameSuggestion</code>, which returns a host name based on the current theme.</p>
78    pub hostname_theme: ::std::option::Option<::std::string::String>,
79    /// <p>The stack's default Availability Zone, which must be in the specified region. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>. If you also specify a value for <code>DefaultSubnetId</code>, the subnet must be in the same zone. For more information, see the <code>VpcId</code> parameter description.</p>
80    pub default_availability_zone: ::std::option::Option<::std::string::String>,
81    /// <p>The stack's default VPC subnet ID. This parameter is required if you specify a value for the <code>VpcId</code> parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for <code>DefaultAvailabilityZone</code>, the subnet must be in that zone. For information on default values and when this parameter is required, see the <code>VpcId</code> parameter description.</p>
82    pub default_subnet_id: ::std::option::Option<::std::string::String>,
83    /// <p>A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:</p>
84    /// <p><code>"{\"key1\": \"value1\", \"key2\": \"value2\",...}"</code></p>
85    /// <p>For more information about custom JSON, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html">Use Custom JSON to Modify the Stack Configuration Attributes</a>.</p>
86    pub custom_json: ::std::option::Option<::std::string::String>,
87    /// <p>The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.</p>
88    pub configuration_manager: ::std::option::Option<crate::types::StackConfigurationManager>,
89    /// <p>A <code>ChefConfiguration</code> object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
90    pub chef_configuration: ::std::option::Option<crate::types::ChefConfiguration>,
91    /// <p>Whether the stack uses custom cookbooks.</p>
92    pub use_custom_cookbooks: ::std::option::Option<bool>,
93    /// <p>Whether to associate the OpsWorks Stacks built-in security groups with the stack's layers.</p>
94    /// <p>OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With <code>UseOpsworksSecurityGroups</code> you can instead provide your own custom security groups. <code>UseOpsworksSecurityGroups</code> has the following settings:</p>
95    /// <ul>
96    /// <li>
97    /// <p>True - OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.</p></li>
98    /// <li>
99    /// <p>False - OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings.</p></li>
100    /// </ul>
101    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
102    pub use_opsworks_security_groups: ::std::option::Option<bool>,
103    /// <p>Contains the information required to retrieve an app or cookbook from a repository. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html">Adding Apps</a> or <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html">Cookbooks and Recipes</a>.</p>
104    pub custom_cookbooks_source: ::std::option::Option<crate::types::Source>,
105    /// <p>A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html"> Using SSH to Communicate with an Instance</a> and <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html"> Managing SSH Access</a>. You can override this setting by specifying a different key pair, or no key pair, when you <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html"> create an instance</a>.</p>
106    pub default_ssh_key_name: ::std::option::Option<::std::string::String>,
107    /// <p>The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is <code>instance-store</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device">Storage for the Root Device</a>.</p>
108    pub default_root_device_type: ::std::option::Option<crate::types::RootDeviceType>,
109    /// <p>The default OpsWorks Stacks agent version. You have the following options:</p>
110    /// <ul>
111    /// <li>
112    /// <p>Auto-update - Set this parameter to <code>LATEST</code>. OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.</p></li>
113    /// <li>
114    /// <p>Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. OpsWorks Stacks installs that version on the stack's instances.</p></li>
115    /// </ul>
116    /// <p>The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call <code>DescribeAgentVersions</code>. AgentVersion cannot be set to Chef 12.2.</p><note>
117    /// <p>You can also specify an agent version when you create or update an instance, which overrides the stack's default setting.</p>
118    /// </note>
119    pub agent_version: ::std::option::Option<::std::string::String>,
120}
121impl CreateStackInput {
122    /// <p>The stack name. Stack names can be a maximum of 64 characters.</p>
123    pub fn name(&self) -> ::std::option::Option<&str> {
124        self.name.as_deref()
125    }
126    /// <p>The stack's Amazon Web Services Region, such as <code>ap-south-1</code>. For more information about Amazon Web Services Regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>.</p><note>
127    /// <p>In the CLI, this API maps to the <code>--stack-region</code> parameter. If the <code>--stack-region</code> parameter and the CLI common parameter <code>--region</code> are set to the same value, the stack uses a <i>regional</i> endpoint. If the <code>--stack-region</code> parameter is not set, but the CLI <code>--region</code> parameter is, this also results in a stack with a <i>regional</i> endpoint. However, if the <code>--region</code> parameter is set to <code>us-east-1</code>, and the <code>--stack-region</code> parameter is set to one of the following, then the stack uses a legacy or <i>classic</i> region: <code>us-west-1, us-west-2, sa-east-1, eu-central-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2</code>. In this case, the actual API endpoint of the stack is in <code>us-east-1</code>. Only the preceding regions are supported as classic regions in the <code>us-east-1</code> API endpoint. Because it is a best practice to choose the regional endpoint that is closest to where you manage Amazon Web Services, we recommend that you use regional endpoints for new stacks. The CLI common <code>--region</code> parameter always specifies a regional API endpoint; it cannot be used to specify a classic OpsWorks Stacks region.</p>
128    /// </note>
129    pub fn region(&self) -> ::std::option::Option<&str> {
130        self.region.as_deref()
131    }
132    /// <p>The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.</p>
133    /// <ul>
134    /// <li>
135    /// <p>If your account supports EC2-Classic, the default value is <code>no VPC</code>.</p></li>
136    /// <li>
137    /// <p>If your account does not support EC2-Classic, the default value is the default VPC for the specified region.</p></li>
138    /// </ul>
139    /// <p>If the VPC ID corresponds to a default VPC and you have specified either the <code>DefaultAvailabilityZone</code> or the <code>DefaultSubnetId</code> parameter only, OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.</p>
140    /// <p>If you specify a nondefault VPC ID, note the following:</p>
141    /// <ul>
142    /// <li>
143    /// <p>It must belong to a VPC in your account that is in the specified region.</p></li>
144    /// <li>
145    /// <p>You must specify a value for <code>DefaultSubnetId</code>.</p></li>
146    /// </ul>
147    /// <p>For more information about how to use OpsWorks Stacks with a VPC, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html">Running a Stack in a VPC</a>. For more information about default VPC and EC2-Classic, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported Platforms</a>.</p>
148    pub fn vpc_id(&self) -> ::std::option::Option<&str> {
149        self.vpc_id.as_deref()
150    }
151    /// <p>One or more user-defined key-value pairs to be added to the stack attributes.</p>
152    pub fn attributes(&self) -> ::std::option::Option<&::std::collections::HashMap<crate::types::StackAttributesKeys, ::std::string::String>> {
153        self.attributes.as_ref()
154    }
155    /// <p>The stack's IAM role, which allows OpsWorks Stacks to work with Amazon Web Services resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
156    pub fn service_role_arn(&self) -> ::std::option::Option<&str> {
157        self.service_role_arn.as_deref()
158    }
159    /// <p>The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
160    pub fn default_instance_profile_arn(&self) -> ::std::option::Option<&str> {
161        self.default_instance_profile_arn.as_deref()
162    }
163    /// <p>The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.</p>
164    /// <ul>
165    /// <li>
166    /// <p>A supported Linux operating system: An Amazon Linux version, such as <code>Amazon Linux 2</code>, <code>Amazon Linux 2018.03</code>, <code>Amazon Linux 2017.09</code>, <code>Amazon Linux 2017.03</code>, <code>Amazon Linux 2016.09</code>, <code>Amazon Linux 2016.03</code>, <code>Amazon Linux 2015.09</code>, or <code>Amazon Linux 2015.03</code>.</p></li>
167    /// <li>
168    /// <p>A supported Ubuntu operating system, such as <code>Ubuntu 18.04 LTS</code>, <code>Ubuntu 16.04 LTS</code>, <code>Ubuntu 14.04 LTS</code>, or <code>Ubuntu 12.04 LTS</code>.</p></li>
169    /// <li>
170    /// <p><code>CentOS Linux 7</code></p></li>
171    /// <li>
172    /// <p><code>Red Hat Enterprise Linux 7</code></p></li>
173    /// <li>
174    /// <p>A supported Windows operating system, such as <code>Microsoft Windows Server 2012 R2 Base</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Express</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Standard</code>, or <code>Microsoft Windows Server 2012 R2 with SQL Server Web</code>.</p></li>
175    /// <li>
176    /// <p>A custom AMI: <code>Custom</code>. You specify the custom AMI you want to use when you create instances. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html"> Using Custom AMIs</a>.</p></li>
177    /// </ul>
178    /// <p>The default option is the current Amazon Linux version. Not all operating systems are supported with all versions of Chef. For more information about supported operating systems, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html">OpsWorks Stacks Operating Systems</a>.</p>
179    pub fn default_os(&self) -> ::std::option::Option<&str> {
180        self.default_os.as_deref()
181    }
182    /// <p>The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, <code>HostnameTheme</code> is set to <code>Layer_Dependent</code>, which creates host names by appending integers to the layer's short name. The other themes are:</p>
183    /// <ul>
184    /// <li>
185    /// <p><code>Baked_Goods</code></p></li>
186    /// <li>
187    /// <p><code>Clouds</code></p></li>
188    /// <li>
189    /// <p><code>Europe_Cities</code></p></li>
190    /// <li>
191    /// <p><code>Fruits</code></p></li>
192    /// <li>
193    /// <p><code>Greek_Deities_and_Titans</code></p></li>
194    /// <li>
195    /// <p><code>Legendary_creatures_from_Japan</code></p></li>
196    /// <li>
197    /// <p><code>Planets_and_Moons</code></p></li>
198    /// <li>
199    /// <p><code>Roman_Deities</code></p></li>
200    /// <li>
201    /// <p><code>Scottish_Islands</code></p></li>
202    /// <li>
203    /// <p><code>US_Cities</code></p></li>
204    /// <li>
205    /// <p><code>Wild_Cats</code></p></li>
206    /// </ul>
207    /// <p>To obtain a generated host name, call <code>GetHostNameSuggestion</code>, which returns a host name based on the current theme.</p>
208    pub fn hostname_theme(&self) -> ::std::option::Option<&str> {
209        self.hostname_theme.as_deref()
210    }
211    /// <p>The stack's default Availability Zone, which must be in the specified region. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>. If you also specify a value for <code>DefaultSubnetId</code>, the subnet must be in the same zone. For more information, see the <code>VpcId</code> parameter description.</p>
212    pub fn default_availability_zone(&self) -> ::std::option::Option<&str> {
213        self.default_availability_zone.as_deref()
214    }
215    /// <p>The stack's default VPC subnet ID. This parameter is required if you specify a value for the <code>VpcId</code> parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for <code>DefaultAvailabilityZone</code>, the subnet must be in that zone. For information on default values and when this parameter is required, see the <code>VpcId</code> parameter description.</p>
216    pub fn default_subnet_id(&self) -> ::std::option::Option<&str> {
217        self.default_subnet_id.as_deref()
218    }
219    /// <p>A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:</p>
220    /// <p><code>"{\"key1\": \"value1\", \"key2\": \"value2\",...}"</code></p>
221    /// <p>For more information about custom JSON, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html">Use Custom JSON to Modify the Stack Configuration Attributes</a>.</p>
222    pub fn custom_json(&self) -> ::std::option::Option<&str> {
223        self.custom_json.as_deref()
224    }
225    /// <p>The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.</p>
226    pub fn configuration_manager(&self) -> ::std::option::Option<&crate::types::StackConfigurationManager> {
227        self.configuration_manager.as_ref()
228    }
229    /// <p>A <code>ChefConfiguration</code> object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
230    pub fn chef_configuration(&self) -> ::std::option::Option<&crate::types::ChefConfiguration> {
231        self.chef_configuration.as_ref()
232    }
233    /// <p>Whether the stack uses custom cookbooks.</p>
234    pub fn use_custom_cookbooks(&self) -> ::std::option::Option<bool> {
235        self.use_custom_cookbooks
236    }
237    /// <p>Whether to associate the OpsWorks Stacks built-in security groups with the stack's layers.</p>
238    /// <p>OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With <code>UseOpsworksSecurityGroups</code> you can instead provide your own custom security groups. <code>UseOpsworksSecurityGroups</code> has the following settings:</p>
239    /// <ul>
240    /// <li>
241    /// <p>True - OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.</p></li>
242    /// <li>
243    /// <p>False - OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings.</p></li>
244    /// </ul>
245    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
246    pub fn use_opsworks_security_groups(&self) -> ::std::option::Option<bool> {
247        self.use_opsworks_security_groups
248    }
249    /// <p>Contains the information required to retrieve an app or cookbook from a repository. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html">Adding Apps</a> or <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html">Cookbooks and Recipes</a>.</p>
250    pub fn custom_cookbooks_source(&self) -> ::std::option::Option<&crate::types::Source> {
251        self.custom_cookbooks_source.as_ref()
252    }
253    /// <p>A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html"> Using SSH to Communicate with an Instance</a> and <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html"> Managing SSH Access</a>. You can override this setting by specifying a different key pair, or no key pair, when you <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html"> create an instance</a>.</p>
254    pub fn default_ssh_key_name(&self) -> ::std::option::Option<&str> {
255        self.default_ssh_key_name.as_deref()
256    }
257    /// <p>The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is <code>instance-store</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device">Storage for the Root Device</a>.</p>
258    pub fn default_root_device_type(&self) -> ::std::option::Option<&crate::types::RootDeviceType> {
259        self.default_root_device_type.as_ref()
260    }
261    /// <p>The default OpsWorks Stacks agent version. You have the following options:</p>
262    /// <ul>
263    /// <li>
264    /// <p>Auto-update - Set this parameter to <code>LATEST</code>. OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.</p></li>
265    /// <li>
266    /// <p>Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. OpsWorks Stacks installs that version on the stack's instances.</p></li>
267    /// </ul>
268    /// <p>The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call <code>DescribeAgentVersions</code>. AgentVersion cannot be set to Chef 12.2.</p><note>
269    /// <p>You can also specify an agent version when you create or update an instance, which overrides the stack's default setting.</p>
270    /// </note>
271    pub fn agent_version(&self) -> ::std::option::Option<&str> {
272        self.agent_version.as_deref()
273    }
274}
275impl CreateStackInput {
276    /// Creates a new builder-style object to manufacture [`CreateStackInput`](crate::operation::create_stack::CreateStackInput).
277    pub fn builder() -> crate::operation::create_stack::builders::CreateStackInputBuilder {
278        crate::operation::create_stack::builders::CreateStackInputBuilder::default()
279    }
280}
281
282/// A builder for [`CreateStackInput`](crate::operation::create_stack::CreateStackInput).
283#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
284#[non_exhaustive]
285pub struct CreateStackInputBuilder {
286    pub(crate) name: ::std::option::Option<::std::string::String>,
287    pub(crate) region: ::std::option::Option<::std::string::String>,
288    pub(crate) vpc_id: ::std::option::Option<::std::string::String>,
289    pub(crate) attributes: ::std::option::Option<::std::collections::HashMap<crate::types::StackAttributesKeys, ::std::string::String>>,
290    pub(crate) service_role_arn: ::std::option::Option<::std::string::String>,
291    pub(crate) default_instance_profile_arn: ::std::option::Option<::std::string::String>,
292    pub(crate) default_os: ::std::option::Option<::std::string::String>,
293    pub(crate) hostname_theme: ::std::option::Option<::std::string::String>,
294    pub(crate) default_availability_zone: ::std::option::Option<::std::string::String>,
295    pub(crate) default_subnet_id: ::std::option::Option<::std::string::String>,
296    pub(crate) custom_json: ::std::option::Option<::std::string::String>,
297    pub(crate) configuration_manager: ::std::option::Option<crate::types::StackConfigurationManager>,
298    pub(crate) chef_configuration: ::std::option::Option<crate::types::ChefConfiguration>,
299    pub(crate) use_custom_cookbooks: ::std::option::Option<bool>,
300    pub(crate) use_opsworks_security_groups: ::std::option::Option<bool>,
301    pub(crate) custom_cookbooks_source: ::std::option::Option<crate::types::Source>,
302    pub(crate) default_ssh_key_name: ::std::option::Option<::std::string::String>,
303    pub(crate) default_root_device_type: ::std::option::Option<crate::types::RootDeviceType>,
304    pub(crate) agent_version: ::std::option::Option<::std::string::String>,
305}
306impl CreateStackInputBuilder {
307    /// <p>The stack name. Stack names can be a maximum of 64 characters.</p>
308    /// This field is required.
309    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
310        self.name = ::std::option::Option::Some(input.into());
311        self
312    }
313    /// <p>The stack name. Stack names can be a maximum of 64 characters.</p>
314    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
315        self.name = input;
316        self
317    }
318    /// <p>The stack name. Stack names can be a maximum of 64 characters.</p>
319    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
320        &self.name
321    }
322    /// <p>The stack's Amazon Web Services Region, such as <code>ap-south-1</code>. For more information about Amazon Web Services Regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>.</p><note>
323    /// <p>In the CLI, this API maps to the <code>--stack-region</code> parameter. If the <code>--stack-region</code> parameter and the CLI common parameter <code>--region</code> are set to the same value, the stack uses a <i>regional</i> endpoint. If the <code>--stack-region</code> parameter is not set, but the CLI <code>--region</code> parameter is, this also results in a stack with a <i>regional</i> endpoint. However, if the <code>--region</code> parameter is set to <code>us-east-1</code>, and the <code>--stack-region</code> parameter is set to one of the following, then the stack uses a legacy or <i>classic</i> region: <code>us-west-1, us-west-2, sa-east-1, eu-central-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2</code>. In this case, the actual API endpoint of the stack is in <code>us-east-1</code>. Only the preceding regions are supported as classic regions in the <code>us-east-1</code> API endpoint. Because it is a best practice to choose the regional endpoint that is closest to where you manage Amazon Web Services, we recommend that you use regional endpoints for new stacks. The CLI common <code>--region</code> parameter always specifies a regional API endpoint; it cannot be used to specify a classic OpsWorks Stacks region.</p>
324    /// </note>
325    /// This field is required.
326    pub fn region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
327        self.region = ::std::option::Option::Some(input.into());
328        self
329    }
330    /// <p>The stack's Amazon Web Services Region, such as <code>ap-south-1</code>. For more information about Amazon Web Services Regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>.</p><note>
331    /// <p>In the CLI, this API maps to the <code>--stack-region</code> parameter. If the <code>--stack-region</code> parameter and the CLI common parameter <code>--region</code> are set to the same value, the stack uses a <i>regional</i> endpoint. If the <code>--stack-region</code> parameter is not set, but the CLI <code>--region</code> parameter is, this also results in a stack with a <i>regional</i> endpoint. However, if the <code>--region</code> parameter is set to <code>us-east-1</code>, and the <code>--stack-region</code> parameter is set to one of the following, then the stack uses a legacy or <i>classic</i> region: <code>us-west-1, us-west-2, sa-east-1, eu-central-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2</code>. In this case, the actual API endpoint of the stack is in <code>us-east-1</code>. Only the preceding regions are supported as classic regions in the <code>us-east-1</code> API endpoint. Because it is a best practice to choose the regional endpoint that is closest to where you manage Amazon Web Services, we recommend that you use regional endpoints for new stacks. The CLI common <code>--region</code> parameter always specifies a regional API endpoint; it cannot be used to specify a classic OpsWorks Stacks region.</p>
332    /// </note>
333    pub fn set_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
334        self.region = input;
335        self
336    }
337    /// <p>The stack's Amazon Web Services Region, such as <code>ap-south-1</code>. For more information about Amazon Web Services Regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>.</p><note>
338    /// <p>In the CLI, this API maps to the <code>--stack-region</code> parameter. If the <code>--stack-region</code> parameter and the CLI common parameter <code>--region</code> are set to the same value, the stack uses a <i>regional</i> endpoint. If the <code>--stack-region</code> parameter is not set, but the CLI <code>--region</code> parameter is, this also results in a stack with a <i>regional</i> endpoint. However, if the <code>--region</code> parameter is set to <code>us-east-1</code>, and the <code>--stack-region</code> parameter is set to one of the following, then the stack uses a legacy or <i>classic</i> region: <code>us-west-1, us-west-2, sa-east-1, eu-central-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2</code>. In this case, the actual API endpoint of the stack is in <code>us-east-1</code>. Only the preceding regions are supported as classic regions in the <code>us-east-1</code> API endpoint. Because it is a best practice to choose the regional endpoint that is closest to where you manage Amazon Web Services, we recommend that you use regional endpoints for new stacks. The CLI common <code>--region</code> parameter always specifies a regional API endpoint; it cannot be used to specify a classic OpsWorks Stacks region.</p>
339    /// </note>
340    pub fn get_region(&self) -> &::std::option::Option<::std::string::String> {
341        &self.region
342    }
343    /// <p>The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.</p>
344    /// <ul>
345    /// <li>
346    /// <p>If your account supports EC2-Classic, the default value is <code>no VPC</code>.</p></li>
347    /// <li>
348    /// <p>If your account does not support EC2-Classic, the default value is the default VPC for the specified region.</p></li>
349    /// </ul>
350    /// <p>If the VPC ID corresponds to a default VPC and you have specified either the <code>DefaultAvailabilityZone</code> or the <code>DefaultSubnetId</code> parameter only, OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.</p>
351    /// <p>If you specify a nondefault VPC ID, note the following:</p>
352    /// <ul>
353    /// <li>
354    /// <p>It must belong to a VPC in your account that is in the specified region.</p></li>
355    /// <li>
356    /// <p>You must specify a value for <code>DefaultSubnetId</code>.</p></li>
357    /// </ul>
358    /// <p>For more information about how to use OpsWorks Stacks with a VPC, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html">Running a Stack in a VPC</a>. For more information about default VPC and EC2-Classic, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported Platforms</a>.</p>
359    pub fn vpc_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
360        self.vpc_id = ::std::option::Option::Some(input.into());
361        self
362    }
363    /// <p>The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.</p>
364    /// <ul>
365    /// <li>
366    /// <p>If your account supports EC2-Classic, the default value is <code>no VPC</code>.</p></li>
367    /// <li>
368    /// <p>If your account does not support EC2-Classic, the default value is the default VPC for the specified region.</p></li>
369    /// </ul>
370    /// <p>If the VPC ID corresponds to a default VPC and you have specified either the <code>DefaultAvailabilityZone</code> or the <code>DefaultSubnetId</code> parameter only, OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.</p>
371    /// <p>If you specify a nondefault VPC ID, note the following:</p>
372    /// <ul>
373    /// <li>
374    /// <p>It must belong to a VPC in your account that is in the specified region.</p></li>
375    /// <li>
376    /// <p>You must specify a value for <code>DefaultSubnetId</code>.</p></li>
377    /// </ul>
378    /// <p>For more information about how to use OpsWorks Stacks with a VPC, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html">Running a Stack in a VPC</a>. For more information about default VPC and EC2-Classic, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported Platforms</a>.</p>
379    pub fn set_vpc_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
380        self.vpc_id = input;
381        self
382    }
383    /// <p>The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.</p>
384    /// <ul>
385    /// <li>
386    /// <p>If your account supports EC2-Classic, the default value is <code>no VPC</code>.</p></li>
387    /// <li>
388    /// <p>If your account does not support EC2-Classic, the default value is the default VPC for the specified region.</p></li>
389    /// </ul>
390    /// <p>If the VPC ID corresponds to a default VPC and you have specified either the <code>DefaultAvailabilityZone</code> or the <code>DefaultSubnetId</code> parameter only, OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.</p>
391    /// <p>If you specify a nondefault VPC ID, note the following:</p>
392    /// <ul>
393    /// <li>
394    /// <p>It must belong to a VPC in your account that is in the specified region.</p></li>
395    /// <li>
396    /// <p>You must specify a value for <code>DefaultSubnetId</code>.</p></li>
397    /// </ul>
398    /// <p>For more information about how to use OpsWorks Stacks with a VPC, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html">Running a Stack in a VPC</a>. For more information about default VPC and EC2-Classic, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported Platforms</a>.</p>
399    pub fn get_vpc_id(&self) -> &::std::option::Option<::std::string::String> {
400        &self.vpc_id
401    }
402    /// Adds a key-value pair to `attributes`.
403    ///
404    /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
405    ///
406    /// <p>One or more user-defined key-value pairs to be added to the stack attributes.</p>
407    pub fn attributes(mut self, k: crate::types::StackAttributesKeys, v: impl ::std::convert::Into<::std::string::String>) -> Self {
408        let mut hash_map = self.attributes.unwrap_or_default();
409        hash_map.insert(k, v.into());
410        self.attributes = ::std::option::Option::Some(hash_map);
411        self
412    }
413    /// <p>One or more user-defined key-value pairs to be added to the stack attributes.</p>
414    pub fn set_attributes(
415        mut self,
416        input: ::std::option::Option<::std::collections::HashMap<crate::types::StackAttributesKeys, ::std::string::String>>,
417    ) -> Self {
418        self.attributes = input;
419        self
420    }
421    /// <p>One or more user-defined key-value pairs to be added to the stack attributes.</p>
422    pub fn get_attributes(&self) -> &::std::option::Option<::std::collections::HashMap<crate::types::StackAttributesKeys, ::std::string::String>> {
423        &self.attributes
424    }
425    /// <p>The stack's IAM role, which allows OpsWorks Stacks to work with Amazon Web Services resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
426    /// This field is required.
427    pub fn service_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
428        self.service_role_arn = ::std::option::Option::Some(input.into());
429        self
430    }
431    /// <p>The stack's IAM role, which allows OpsWorks Stacks to work with Amazon Web Services resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
432    pub fn set_service_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
433        self.service_role_arn = input;
434        self
435    }
436    /// <p>The stack's IAM role, which allows OpsWorks Stacks to work with Amazon Web Services resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
437    pub fn get_service_role_arn(&self) -> &::std::option::Option<::std::string::String> {
438        &self.service_role_arn
439    }
440    /// <p>The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
441    /// This field is required.
442    pub fn default_instance_profile_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
443        self.default_instance_profile_arn = ::std::option::Option::Some(input.into());
444        self
445    }
446    /// <p>The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
447    pub fn set_default_instance_profile_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
448        self.default_instance_profile_arn = input;
449        self
450    }
451    /// <p>The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">Using Identifiers</a>.</p>
452    pub fn get_default_instance_profile_arn(&self) -> &::std::option::Option<::std::string::String> {
453        &self.default_instance_profile_arn
454    }
455    /// <p>The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.</p>
456    /// <ul>
457    /// <li>
458    /// <p>A supported Linux operating system: An Amazon Linux version, such as <code>Amazon Linux 2</code>, <code>Amazon Linux 2018.03</code>, <code>Amazon Linux 2017.09</code>, <code>Amazon Linux 2017.03</code>, <code>Amazon Linux 2016.09</code>, <code>Amazon Linux 2016.03</code>, <code>Amazon Linux 2015.09</code>, or <code>Amazon Linux 2015.03</code>.</p></li>
459    /// <li>
460    /// <p>A supported Ubuntu operating system, such as <code>Ubuntu 18.04 LTS</code>, <code>Ubuntu 16.04 LTS</code>, <code>Ubuntu 14.04 LTS</code>, or <code>Ubuntu 12.04 LTS</code>.</p></li>
461    /// <li>
462    /// <p><code>CentOS Linux 7</code></p></li>
463    /// <li>
464    /// <p><code>Red Hat Enterprise Linux 7</code></p></li>
465    /// <li>
466    /// <p>A supported Windows operating system, such as <code>Microsoft Windows Server 2012 R2 Base</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Express</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Standard</code>, or <code>Microsoft Windows Server 2012 R2 with SQL Server Web</code>.</p></li>
467    /// <li>
468    /// <p>A custom AMI: <code>Custom</code>. You specify the custom AMI you want to use when you create instances. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html"> Using Custom AMIs</a>.</p></li>
469    /// </ul>
470    /// <p>The default option is the current Amazon Linux version. Not all operating systems are supported with all versions of Chef. For more information about supported operating systems, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html">OpsWorks Stacks Operating Systems</a>.</p>
471    pub fn default_os(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
472        self.default_os = ::std::option::Option::Some(input.into());
473        self
474    }
475    /// <p>The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.</p>
476    /// <ul>
477    /// <li>
478    /// <p>A supported Linux operating system: An Amazon Linux version, such as <code>Amazon Linux 2</code>, <code>Amazon Linux 2018.03</code>, <code>Amazon Linux 2017.09</code>, <code>Amazon Linux 2017.03</code>, <code>Amazon Linux 2016.09</code>, <code>Amazon Linux 2016.03</code>, <code>Amazon Linux 2015.09</code>, or <code>Amazon Linux 2015.03</code>.</p></li>
479    /// <li>
480    /// <p>A supported Ubuntu operating system, such as <code>Ubuntu 18.04 LTS</code>, <code>Ubuntu 16.04 LTS</code>, <code>Ubuntu 14.04 LTS</code>, or <code>Ubuntu 12.04 LTS</code>.</p></li>
481    /// <li>
482    /// <p><code>CentOS Linux 7</code></p></li>
483    /// <li>
484    /// <p><code>Red Hat Enterprise Linux 7</code></p></li>
485    /// <li>
486    /// <p>A supported Windows operating system, such as <code>Microsoft Windows Server 2012 R2 Base</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Express</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Standard</code>, or <code>Microsoft Windows Server 2012 R2 with SQL Server Web</code>.</p></li>
487    /// <li>
488    /// <p>A custom AMI: <code>Custom</code>. You specify the custom AMI you want to use when you create instances. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html"> Using Custom AMIs</a>.</p></li>
489    /// </ul>
490    /// <p>The default option is the current Amazon Linux version. Not all operating systems are supported with all versions of Chef. For more information about supported operating systems, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html">OpsWorks Stacks Operating Systems</a>.</p>
491    pub fn set_default_os(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
492        self.default_os = input;
493        self
494    }
495    /// <p>The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.</p>
496    /// <ul>
497    /// <li>
498    /// <p>A supported Linux operating system: An Amazon Linux version, such as <code>Amazon Linux 2</code>, <code>Amazon Linux 2018.03</code>, <code>Amazon Linux 2017.09</code>, <code>Amazon Linux 2017.03</code>, <code>Amazon Linux 2016.09</code>, <code>Amazon Linux 2016.03</code>, <code>Amazon Linux 2015.09</code>, or <code>Amazon Linux 2015.03</code>.</p></li>
499    /// <li>
500    /// <p>A supported Ubuntu operating system, such as <code>Ubuntu 18.04 LTS</code>, <code>Ubuntu 16.04 LTS</code>, <code>Ubuntu 14.04 LTS</code>, or <code>Ubuntu 12.04 LTS</code>.</p></li>
501    /// <li>
502    /// <p><code>CentOS Linux 7</code></p></li>
503    /// <li>
504    /// <p><code>Red Hat Enterprise Linux 7</code></p></li>
505    /// <li>
506    /// <p>A supported Windows operating system, such as <code>Microsoft Windows Server 2012 R2 Base</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Express</code>, <code>Microsoft Windows Server 2012 R2 with SQL Server Standard</code>, or <code>Microsoft Windows Server 2012 R2 with SQL Server Web</code>.</p></li>
507    /// <li>
508    /// <p>A custom AMI: <code>Custom</code>. You specify the custom AMI you want to use when you create instances. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html"> Using Custom AMIs</a>.</p></li>
509    /// </ul>
510    /// <p>The default option is the current Amazon Linux version. Not all operating systems are supported with all versions of Chef. For more information about supported operating systems, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html">OpsWorks Stacks Operating Systems</a>.</p>
511    pub fn get_default_os(&self) -> &::std::option::Option<::std::string::String> {
512        &self.default_os
513    }
514    /// <p>The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, <code>HostnameTheme</code> is set to <code>Layer_Dependent</code>, which creates host names by appending integers to the layer's short name. The other themes are:</p>
515    /// <ul>
516    /// <li>
517    /// <p><code>Baked_Goods</code></p></li>
518    /// <li>
519    /// <p><code>Clouds</code></p></li>
520    /// <li>
521    /// <p><code>Europe_Cities</code></p></li>
522    /// <li>
523    /// <p><code>Fruits</code></p></li>
524    /// <li>
525    /// <p><code>Greek_Deities_and_Titans</code></p></li>
526    /// <li>
527    /// <p><code>Legendary_creatures_from_Japan</code></p></li>
528    /// <li>
529    /// <p><code>Planets_and_Moons</code></p></li>
530    /// <li>
531    /// <p><code>Roman_Deities</code></p></li>
532    /// <li>
533    /// <p><code>Scottish_Islands</code></p></li>
534    /// <li>
535    /// <p><code>US_Cities</code></p></li>
536    /// <li>
537    /// <p><code>Wild_Cats</code></p></li>
538    /// </ul>
539    /// <p>To obtain a generated host name, call <code>GetHostNameSuggestion</code>, which returns a host name based on the current theme.</p>
540    pub fn hostname_theme(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
541        self.hostname_theme = ::std::option::Option::Some(input.into());
542        self
543    }
544    /// <p>The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, <code>HostnameTheme</code> is set to <code>Layer_Dependent</code>, which creates host names by appending integers to the layer's short name. The other themes are:</p>
545    /// <ul>
546    /// <li>
547    /// <p><code>Baked_Goods</code></p></li>
548    /// <li>
549    /// <p><code>Clouds</code></p></li>
550    /// <li>
551    /// <p><code>Europe_Cities</code></p></li>
552    /// <li>
553    /// <p><code>Fruits</code></p></li>
554    /// <li>
555    /// <p><code>Greek_Deities_and_Titans</code></p></li>
556    /// <li>
557    /// <p><code>Legendary_creatures_from_Japan</code></p></li>
558    /// <li>
559    /// <p><code>Planets_and_Moons</code></p></li>
560    /// <li>
561    /// <p><code>Roman_Deities</code></p></li>
562    /// <li>
563    /// <p><code>Scottish_Islands</code></p></li>
564    /// <li>
565    /// <p><code>US_Cities</code></p></li>
566    /// <li>
567    /// <p><code>Wild_Cats</code></p></li>
568    /// </ul>
569    /// <p>To obtain a generated host name, call <code>GetHostNameSuggestion</code>, which returns a host name based on the current theme.</p>
570    pub fn set_hostname_theme(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
571        self.hostname_theme = input;
572        self
573    }
574    /// <p>The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, <code>HostnameTheme</code> is set to <code>Layer_Dependent</code>, which creates host names by appending integers to the layer's short name. The other themes are:</p>
575    /// <ul>
576    /// <li>
577    /// <p><code>Baked_Goods</code></p></li>
578    /// <li>
579    /// <p><code>Clouds</code></p></li>
580    /// <li>
581    /// <p><code>Europe_Cities</code></p></li>
582    /// <li>
583    /// <p><code>Fruits</code></p></li>
584    /// <li>
585    /// <p><code>Greek_Deities_and_Titans</code></p></li>
586    /// <li>
587    /// <p><code>Legendary_creatures_from_Japan</code></p></li>
588    /// <li>
589    /// <p><code>Planets_and_Moons</code></p></li>
590    /// <li>
591    /// <p><code>Roman_Deities</code></p></li>
592    /// <li>
593    /// <p><code>Scottish_Islands</code></p></li>
594    /// <li>
595    /// <p><code>US_Cities</code></p></li>
596    /// <li>
597    /// <p><code>Wild_Cats</code></p></li>
598    /// </ul>
599    /// <p>To obtain a generated host name, call <code>GetHostNameSuggestion</code>, which returns a host name based on the current theme.</p>
600    pub fn get_hostname_theme(&self) -> &::std::option::Option<::std::string::String> {
601        &self.hostname_theme
602    }
603    /// <p>The stack's default Availability Zone, which must be in the specified region. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>. If you also specify a value for <code>DefaultSubnetId</code>, the subnet must be in the same zone. For more information, see the <code>VpcId</code> parameter description.</p>
604    pub fn default_availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
605        self.default_availability_zone = ::std::option::Option::Some(input.into());
606        self
607    }
608    /// <p>The stack's default Availability Zone, which must be in the specified region. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>. If you also specify a value for <code>DefaultSubnetId</code>, the subnet must be in the same zone. For more information, see the <code>VpcId</code> parameter description.</p>
609    pub fn set_default_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
610        self.default_availability_zone = input;
611        self
612    }
613    /// <p>The stack's default Availability Zone, which must be in the specified region. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html">Regions and Endpoints</a>. If you also specify a value for <code>DefaultSubnetId</code>, the subnet must be in the same zone. For more information, see the <code>VpcId</code> parameter description.</p>
614    pub fn get_default_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
615        &self.default_availability_zone
616    }
617    /// <p>The stack's default VPC subnet ID. This parameter is required if you specify a value for the <code>VpcId</code> parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for <code>DefaultAvailabilityZone</code>, the subnet must be in that zone. For information on default values and when this parameter is required, see the <code>VpcId</code> parameter description.</p>
618    pub fn default_subnet_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
619        self.default_subnet_id = ::std::option::Option::Some(input.into());
620        self
621    }
622    /// <p>The stack's default VPC subnet ID. This parameter is required if you specify a value for the <code>VpcId</code> parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for <code>DefaultAvailabilityZone</code>, the subnet must be in that zone. For information on default values and when this parameter is required, see the <code>VpcId</code> parameter description.</p>
623    pub fn set_default_subnet_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
624        self.default_subnet_id = input;
625        self
626    }
627    /// <p>The stack's default VPC subnet ID. This parameter is required if you specify a value for the <code>VpcId</code> parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for <code>DefaultAvailabilityZone</code>, the subnet must be in that zone. For information on default values and when this parameter is required, see the <code>VpcId</code> parameter description.</p>
628    pub fn get_default_subnet_id(&self) -> &::std::option::Option<::std::string::String> {
629        &self.default_subnet_id
630    }
631    /// <p>A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:</p>
632    /// <p><code>"{\"key1\": \"value1\", \"key2\": \"value2\",...}"</code></p>
633    /// <p>For more information about custom JSON, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html">Use Custom JSON to Modify the Stack Configuration Attributes</a>.</p>
634    pub fn custom_json(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
635        self.custom_json = ::std::option::Option::Some(input.into());
636        self
637    }
638    /// <p>A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:</p>
639    /// <p><code>"{\"key1\": \"value1\", \"key2\": \"value2\",...}"</code></p>
640    /// <p>For more information about custom JSON, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html">Use Custom JSON to Modify the Stack Configuration Attributes</a>.</p>
641    pub fn set_custom_json(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
642        self.custom_json = input;
643        self
644    }
645    /// <p>A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:</p>
646    /// <p><code>"{\"key1\": \"value1\", \"key2\": \"value2\",...}"</code></p>
647    /// <p>For more information about custom JSON, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html">Use Custom JSON to Modify the Stack Configuration Attributes</a>.</p>
648    pub fn get_custom_json(&self) -> &::std::option::Option<::std::string::String> {
649        &self.custom_json
650    }
651    /// <p>The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.</p>
652    pub fn configuration_manager(mut self, input: crate::types::StackConfigurationManager) -> Self {
653        self.configuration_manager = ::std::option::Option::Some(input);
654        self
655    }
656    /// <p>The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.</p>
657    pub fn set_configuration_manager(mut self, input: ::std::option::Option<crate::types::StackConfigurationManager>) -> Self {
658        self.configuration_manager = input;
659        self
660    }
661    /// <p>The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.</p>
662    pub fn get_configuration_manager(&self) -> &::std::option::Option<crate::types::StackConfigurationManager> {
663        &self.configuration_manager
664    }
665    /// <p>A <code>ChefConfiguration</code> object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
666    pub fn chef_configuration(mut self, input: crate::types::ChefConfiguration) -> Self {
667        self.chef_configuration = ::std::option::Option::Some(input);
668        self
669    }
670    /// <p>A <code>ChefConfiguration</code> object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
671    pub fn set_chef_configuration(mut self, input: ::std::option::Option<crate::types::ChefConfiguration>) -> Self {
672        self.chef_configuration = input;
673        self
674    }
675    /// <p>A <code>ChefConfiguration</code> object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
676    pub fn get_chef_configuration(&self) -> &::std::option::Option<crate::types::ChefConfiguration> {
677        &self.chef_configuration
678    }
679    /// <p>Whether the stack uses custom cookbooks.</p>
680    pub fn use_custom_cookbooks(mut self, input: bool) -> Self {
681        self.use_custom_cookbooks = ::std::option::Option::Some(input);
682        self
683    }
684    /// <p>Whether the stack uses custom cookbooks.</p>
685    pub fn set_use_custom_cookbooks(mut self, input: ::std::option::Option<bool>) -> Self {
686        self.use_custom_cookbooks = input;
687        self
688    }
689    /// <p>Whether the stack uses custom cookbooks.</p>
690    pub fn get_use_custom_cookbooks(&self) -> &::std::option::Option<bool> {
691        &self.use_custom_cookbooks
692    }
693    /// <p>Whether to associate the OpsWorks Stacks built-in security groups with the stack's layers.</p>
694    /// <p>OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With <code>UseOpsworksSecurityGroups</code> you can instead provide your own custom security groups. <code>UseOpsworksSecurityGroups</code> has the following settings:</p>
695    /// <ul>
696    /// <li>
697    /// <p>True - OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.</p></li>
698    /// <li>
699    /// <p>False - OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings.</p></li>
700    /// </ul>
701    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
702    pub fn use_opsworks_security_groups(mut self, input: bool) -> Self {
703        self.use_opsworks_security_groups = ::std::option::Option::Some(input);
704        self
705    }
706    /// <p>Whether to associate the OpsWorks Stacks built-in security groups with the stack's layers.</p>
707    /// <p>OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With <code>UseOpsworksSecurityGroups</code> you can instead provide your own custom security groups. <code>UseOpsworksSecurityGroups</code> has the following settings:</p>
708    /// <ul>
709    /// <li>
710    /// <p>True - OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.</p></li>
711    /// <li>
712    /// <p>False - OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings.</p></li>
713    /// </ul>
714    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
715    pub fn set_use_opsworks_security_groups(mut self, input: ::std::option::Option<bool>) -> Self {
716        self.use_opsworks_security_groups = input;
717        self
718    }
719    /// <p>Whether to associate the OpsWorks Stacks built-in security groups with the stack's layers.</p>
720    /// <p>OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With <code>UseOpsworksSecurityGroups</code> you can instead provide your own custom security groups. <code>UseOpsworksSecurityGroups</code> has the following settings:</p>
721    /// <ul>
722    /// <li>
723    /// <p>True - OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.</p></li>
724    /// <li>
725    /// <p>False - OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings.</p></li>
726    /// </ul>
727    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html">Create a New Stack</a>.</p>
728    pub fn get_use_opsworks_security_groups(&self) -> &::std::option::Option<bool> {
729        &self.use_opsworks_security_groups
730    }
731    /// <p>Contains the information required to retrieve an app or cookbook from a repository. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html">Adding Apps</a> or <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html">Cookbooks and Recipes</a>.</p>
732    pub fn custom_cookbooks_source(mut self, input: crate::types::Source) -> Self {
733        self.custom_cookbooks_source = ::std::option::Option::Some(input);
734        self
735    }
736    /// <p>Contains the information required to retrieve an app or cookbook from a repository. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html">Adding Apps</a> or <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html">Cookbooks and Recipes</a>.</p>
737    pub fn set_custom_cookbooks_source(mut self, input: ::std::option::Option<crate::types::Source>) -> Self {
738        self.custom_cookbooks_source = input;
739        self
740    }
741    /// <p>Contains the information required to retrieve an app or cookbook from a repository. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html">Adding Apps</a> or <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html">Cookbooks and Recipes</a>.</p>
742    pub fn get_custom_cookbooks_source(&self) -> &::std::option::Option<crate::types::Source> {
743        &self.custom_cookbooks_source
744    }
745    /// <p>A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html"> Using SSH to Communicate with an Instance</a> and <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html"> Managing SSH Access</a>. You can override this setting by specifying a different key pair, or no key pair, when you <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html"> create an instance</a>.</p>
746    pub fn default_ssh_key_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
747        self.default_ssh_key_name = ::std::option::Option::Some(input.into());
748        self
749    }
750    /// <p>A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html"> Using SSH to Communicate with an Instance</a> and <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html"> Managing SSH Access</a>. You can override this setting by specifying a different key pair, or no key pair, when you <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html"> create an instance</a>.</p>
751    pub fn set_default_ssh_key_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
752        self.default_ssh_key_name = input;
753        self
754    }
755    /// <p>A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html"> Using SSH to Communicate with an Instance</a> and <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html"> Managing SSH Access</a>. You can override this setting by specifying a different key pair, or no key pair, when you <a href="https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html"> create an instance</a>.</p>
756    pub fn get_default_ssh_key_name(&self) -> &::std::option::Option<::std::string::String> {
757        &self.default_ssh_key_name
758    }
759    /// <p>The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is <code>instance-store</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device">Storage for the Root Device</a>.</p>
760    pub fn default_root_device_type(mut self, input: crate::types::RootDeviceType) -> Self {
761        self.default_root_device_type = ::std::option::Option::Some(input);
762        self
763    }
764    /// <p>The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is <code>instance-store</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device">Storage for the Root Device</a>.</p>
765    pub fn set_default_root_device_type(mut self, input: ::std::option::Option<crate::types::RootDeviceType>) -> Self {
766        self.default_root_device_type = input;
767        self
768    }
769    /// <p>The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is <code>instance-store</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device">Storage for the Root Device</a>.</p>
770    pub fn get_default_root_device_type(&self) -> &::std::option::Option<crate::types::RootDeviceType> {
771        &self.default_root_device_type
772    }
773    /// <p>The default OpsWorks Stacks agent version. You have the following options:</p>
774    /// <ul>
775    /// <li>
776    /// <p>Auto-update - Set this parameter to <code>LATEST</code>. OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.</p></li>
777    /// <li>
778    /// <p>Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. OpsWorks Stacks installs that version on the stack's instances.</p></li>
779    /// </ul>
780    /// <p>The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call <code>DescribeAgentVersions</code>. AgentVersion cannot be set to Chef 12.2.</p><note>
781    /// <p>You can also specify an agent version when you create or update an instance, which overrides the stack's default setting.</p>
782    /// </note>
783    pub fn agent_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
784        self.agent_version = ::std::option::Option::Some(input.into());
785        self
786    }
787    /// <p>The default OpsWorks Stacks agent version. You have the following options:</p>
788    /// <ul>
789    /// <li>
790    /// <p>Auto-update - Set this parameter to <code>LATEST</code>. OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.</p></li>
791    /// <li>
792    /// <p>Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. OpsWorks Stacks installs that version on the stack's instances.</p></li>
793    /// </ul>
794    /// <p>The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call <code>DescribeAgentVersions</code>. AgentVersion cannot be set to Chef 12.2.</p><note>
795    /// <p>You can also specify an agent version when you create or update an instance, which overrides the stack's default setting.</p>
796    /// </note>
797    pub fn set_agent_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
798        self.agent_version = input;
799        self
800    }
801    /// <p>The default OpsWorks Stacks agent version. You have the following options:</p>
802    /// <ul>
803    /// <li>
804    /// <p>Auto-update - Set this parameter to <code>LATEST</code>. OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.</p></li>
805    /// <li>
806    /// <p>Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. OpsWorks Stacks installs that version on the stack's instances.</p></li>
807    /// </ul>
808    /// <p>The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call <code>DescribeAgentVersions</code>. AgentVersion cannot be set to Chef 12.2.</p><note>
809    /// <p>You can also specify an agent version when you create or update an instance, which overrides the stack's default setting.</p>
810    /// </note>
811    pub fn get_agent_version(&self) -> &::std::option::Option<::std::string::String> {
812        &self.agent_version
813    }
814    /// Consumes the builder and constructs a [`CreateStackInput`](crate::operation::create_stack::CreateStackInput).
815    pub fn build(self) -> ::std::result::Result<crate::operation::create_stack::CreateStackInput, ::aws_smithy_types::error::operation::BuildError> {
816        ::std::result::Result::Ok(crate::operation::create_stack::CreateStackInput {
817            name: self.name,
818            region: self.region,
819            vpc_id: self.vpc_id,
820            attributes: self.attributes,
821            service_role_arn: self.service_role_arn,
822            default_instance_profile_arn: self.default_instance_profile_arn,
823            default_os: self.default_os,
824            hostname_theme: self.hostname_theme,
825            default_availability_zone: self.default_availability_zone,
826            default_subnet_id: self.default_subnet_id,
827            custom_json: self.custom_json,
828            configuration_manager: self.configuration_manager,
829            chef_configuration: self.chef_configuration,
830            use_custom_cookbooks: self.use_custom_cookbooks,
831            use_opsworks_security_groups: self.use_opsworks_security_groups,
832            custom_cookbooks_source: self.custom_cookbooks_source,
833            default_ssh_key_name: self.default_ssh_key_name,
834            default_root_device_type: self.default_root_device_type,
835            agent_version: self.agent_version,
836        })
837    }
838}