summaryrefslogtreecommitdiffstats
path: root/ansible/library/write_string.py
blob: 9db88fdd086353c71fe3ef4d3991357c13c9bf51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python
# Copyright (c) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

DOCUMENTATION = '''
---
module: write_string
short_description: write a string to a file
description:
    - write a string to a file without using temp files
options:
  path: path to write to
  val: string to write
  mode: python file mode (w, wb, a, ab)
'''


def main():
    module = AnsibleModule(
        argument_spec={
            'path': {'required': True, 'type': 'path', 'aliases': ['dest']},
            'val': {'required': True, 'type': 'str'},
            'mode': {'required': False, 'default': "w", 'type': 'str',
                     'choices': ['w', 'wb', 'a', 'ab']}}
    )
    params = module.params
    path = params['path']
    mode = params['mode']
    val = params['val']
    with open(path, mode) as file_object:
        file_object.write(val)

    module.exit_json(changed=True)


# <<INCLUDE_ANSIBLE_MODULE_COMMON>>
from ansible.module_utils.basic import *  # noqa

if __name__ == '__main__':
    main()
: DefaultPasswords} EndpointMap: {get_param: EndpointMap} outputs: role_data: description: Role data for the Ironic conductor role. value: service_name: ironic_conductor monitoring_subscription: {get_param: MonitoringSubscriptionIronicConductor} config_settings: map_merge: - get_attr: [IronicBase, role_data, config_settings] # FIXME: I have no idea why neutron_url is in "api" manifest - ironic::api::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]} ironic::conductor::api_url: {get_param: [EndpointMap, IronicInternal, uri_no_suffix]} ironic::conductor::cleaning_disk_erase: {get_param: IronicCleaningDiskErase} ironic::conductor::enabled_drivers: {get_param: IronicEnabledDrivers} # We need an endpoint containing a real IP, not a VIP here ironic_conductor_http_host: {get_param: [ServiceNetMap, IronicNetwork]} ironic::conductor::http_url: list_join: - '' - - 'http://' - '%{hiera("ironic_conductor_http_host")}:' - {get_param: IronicIPXEPort} ironic::drivers::pxe::ipxe_enabled: {get_param: IronicIPXEEnabled} ironic::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]} # NOTE: bind IP is found in Heat replacing the network name with the # local node IP for the given network; replacement examples # (eg. for internal_api): # internal_api -> IP # internal_api_uri -> [IP] # internal_api_subnet - > IP/CIDR ironic::drivers::pxe::tftp_server: {get_param: [ServiceNetMap, IronicNetwork]} # NOTE(dtantsur): UEFI only works with iPXE currently for us ironic::drivers::pxe::uefi_pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template' ironic::drivers::pxe::uefi_pxe_bootfile_name: 'ipxe.efi' tripleo.ironic_conductor.firewall_rules: '134 ironic conductor TFTP': dport: 69 proto: udp '135 ironic conductor HTTP': dport: {get_param: IronicIPXEPort} # NOTE(dtantsur): the my_ip parameter is heavily overloaded in # ironic. It's used as a default value for e.g. TFTP server IP, # glance and neutron endpoints, virtual console IP. We override # the TFTP server IP in ironic-conductor.yaml as it should not be # the VIP, but rather a real IP of the host. ironic::my_ip: {get_param: [ServiceNetMap, IronicNetwork]} ironic::pxe::common::http_port: {get_param: IronicIPXEPort} step_config: | include ::tripleo::profile::base::ironic::conductor