def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),
            # Share Details
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),
            lockdown_mode=dict(required=True, choices=['Enabled',
                                                       'Disabled'])),
        supports_check_mode=False)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_system_lockdown_mode(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True,
                                type='str',
                                aliases=['idrac_pwd'],
                                no_log=True),
            idrac_port=dict(required=False, default=443)),
        supports_check_mode=False)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_get_system_inventory(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(
        ansible_facts={idrac.ipaddr: {
            'SystemInventory': msg['msg']
        }})
Exemplo n.º 3
0
def main():
    module = AnsibleModule(
        argument_spec=dict(
            # iDRAC Credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True, type='str', aliases=['idrac_pwd'], no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Network File Share
            share_name=dict(required=True, type='str'),
            share_user=dict(required=False, type='str'),
            share_password=dict(required=False, type='str', aliases=['share_pwd'], no_log=True),

            # ISO Image relative to Network File Share
            iso_image=dict(required=True, type='str'),

        ),
        supports_check_mode=False)
    module.deprecate("The 'dellemc_boot_to_network_iso' module has been deprecated. "
                     "Use 'idrac_os_deployment' instead",
                     version=3.3)
    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_boot_to_network_iso(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True,
                                type='str',
                                aliases=['idrac_pwd'],
                                no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_password=dict(required=False,
                                type='str',
                                aliases=['share_pwd'],
                                no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),
            csior=dict(required=False,
                       choices=['Enabled', 'Disabled'],
                       default='Enabled')),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_setup_idrac_csior(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
Exemplo n.º 5
0
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # setup Webserver
            enable_web_server=dict(required=False,
                                   choices=['Enabled', 'Disabled'],
                                   default=None),
            http_port=dict(required=False, default=None, type='int'),
            https_port=dict(required=False, default=None, type='int'),
            ssl_encryption=dict(required=False,
                                choices=[
                                    'Auto_Negotiate', 'T_128_Bit_or_higher',
                                    'T_168_Bit_or_higher',
                                    'T_256_Bit_or_higher'
                                ],
                                default=None),
            tls_protocol=dict(required=False,
                              choices=[
                                  'TLS_1_0_and_Higher', 'TLS_1_1_and_Higher',
                                  'TLS_1_2_Only'
                              ],
                              default=None),
            timeout=dict(required=False, default=None, type="str"),

            # set up SNMP
            snmp_enable=dict(required=False,
                             choices=['Enabled', 'Disabled'],
                             default=None),
            community_name=dict(required=False, type='str'),
            snmp_protocol=dict(required=False,
                               choices=['All', 'SNMPv3'],
                               default=None),
            alert_port=dict(required=False),
            discovery_port=dict(required=False, type="int", default=162),
            trap_format=dict(required=False, ),
        ),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_idrac_services_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC Credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True,
                           type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # JOB ID
            job_id=dict(required=True, type='str')
        ),

        supports_check_mode=False)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_get_lc_job_status(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
Exemplo n.º 7
0
def main():
    module = AnsibleModule(
        argument_spec={
            "idrac_ip": {"required": True, "type": 'str'},
            "idrac_user": {"required": True, "type": 'str'},
            "idrac_pwd": {"required": True, "type": 'str', "no_log": True},
            "idrac_port": {"required": False, "default": 443, "type": 'int'},

            "share_name": {"required": True, "type": 'str'},
            "share_user": {"required": False, "type": 'str'},
            "share_pwd": {"required": False, "type": 'str', "no_log": True},
            "share_mnt": {"required": True, "type": 'str'},

            "catalog_file_name": {"required": False, "type": 'str', "default": "Catalog.xml"},
            "reboot": {"required": False, "type": 'bool', "default": False},
            "job_wait": {"required": False, "type": 'bool', "default": True},
        },

        supports_check_mode=False)

    try:
        # Validate the catalog file
        _validate_catalog_file(module.params['catalog_file_name'])
        # Connect to iDRAC and update firmware
        with iDRACConnection(module.params) as idrac:
            update_status = update_firmware(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    module.exit_json(msg='Successfully updated the firmware.', update_status=update_status)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True,
                                type='str',
                                aliases=['idrac_pwd'],
                                no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Network File Share
            share_name=dict(required=True, type='str'),
            share_user=dict(required=False, type='str'),
            share_password=dict(required=False,
                                type='str',
                                aliases=['share_pwd'],
                                no_log=True),
            job_wait=dict(required=True, type='bool')),
        supports_check_mode=False)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_export_lc_logs(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
Exemplo n.º 9
0
def main():

    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True,
                                type='str',
                                aliases=['idrac_pwd'],
                                no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),
            change_power=dict(required=True,
                              choices=[
                                  "On", "ForceOff", "GracefulRestart",
                                  "GracefulShutdown", "PushPowerButton", "Nmi"
                              ])),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_change_power_state(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(
            # iDRAC Credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Network File Share
            share_name=dict(required=True, type='str'),
            share_user=dict(required=False, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),

            # ISO Image relative to Network File Share
            iso_image=dict(required=True, type='str'),

        ),
        supports_check_mode=False)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_boot_to_network_iso(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    mutual_exclusive_args = [['boot_sources', 'attributes'],
                             ['boot_sources', 'secure_boot_mode'],
                             ['boot_sources', 'boot_mode'],
                             ['boot_sources', 'boot_sequence'],
                             ['boot_sources', 'nvme_mode'],
                             ['boot_sources', 'onetime_boot_mode']]
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=False, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # Bios configuration Attributes
            boot_mode=dict(required=False,
                           choices=['Bios', 'Uefi'],
                           default=None),
            nvme_mode=dict(required=False,
                           choices=['NonRaid', 'Raid'],
                           default=None),
            secure_boot_mode=dict(
                required=False,
                choices=['AuditMode', 'DeployedMode', 'SetupMode', 'UserMode'],
                default=None),
            onetime_boot_mode=dict(required=False,
                                   choices=[
                                       'Disabled', 'OneTimeBootSeq',
                                       'OneTimeCustomBootSeqStr',
                                       'OneTimeCustomHddSeqStr',
                                       'OneTimeCustomUefiBootSeqStr',
                                       'OneTimeHddSeq', 'OneTimeUefiBootSeq'
                                   ],
                                   default=None),

            # Bios Boot Sequence
            boot_sequence=dict(required=False, type="str", default=None),
            attributes=dict(required=False, type='dict'),
            boot_sources=dict(required=False, type='list')),
        mutually_exclusive=mutual_exclusive_args,
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_server_bios_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # setup SNMP Trap Destination
            destination_number=dict(required=False, type="int"),
            destination=dict(required=False, type="str"),
            snmp_v3_username=dict(required=False, type="str"),
            snmp_trap_state=dict(required=False,
                                 choices=["Enabled", "Disabled"],
                                 default=None),

            # setup Email Alerts
            alert_number=dict(required=False, type="int"),
            address=dict(required=False, default=None, type="str"),
            custom_message=dict(required=False, default=None, type="str"),
            email_alert_state=dict(required=False,
                                   choices=["Enabled", "Disabled"],
                                   default=None),

            # setup iDRAC Alerts
            enable_alerts=dict(required=False,
                               choices=["Enabled", "Disabled"],
                               default=None),

            # setup SMTP
            authentication=dict(required=False,
                                choices=['Enabled', 'Disabled'],
                                default=None),
            smtp_ip_address=dict(required=False, default=None, type='str'),
            smtp_port=dict(required=False, type='str'),
            username=dict(required=False, type="str"),
            password=dict(required=False, type="str", no_log=True),
        ),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_idrac_eventing_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec={
            "idrac_ip": {"required": True, "type": 'str'},
            "idrac_user": {"required": True, "type": 'str'},
            "idrac_password": {"required": True, "type": 'str', "aliases": ["idrac_pwd"], "no_log": True},
            "idrac_port": {"required": False, "default": 443, "type": 'int'},
            "state": {"required": False,
                      "choices": ['create', 'delete', 'view'], "default": 'view'},
            "volume_id": {"required": False, "type": 'str'},
            "volumes": {"required": False, "type": 'list'},
            "span_depth": {"required": False, "type": 'int', "default": 1},
            "span_length": {"required": False, "type": 'int', "default": 1},
            "number_dedicated_hot_spare": {"required": False, "type": 'int', "default": 0},
            "volume_type": {"required": False,
                            "choices": ['RAID 0', 'RAID 1', 'RAID 5', 'RAID 6', 'RAID 10', 'RAID 50', 'RAID 60'],
                            "default": 'RAID 0'},
            "disk_cache_policy": {"required": False, "choices": ["Default", "Enabled", "Disabled"],
                                  "default": "Default"},
            "write_cache_policy": {"required": False, "choices": ["WriteThrough", "WriteBack", "WriteBackForce"],
                                   "default": "WriteThrough"},
            "read_cache_policy": {"required": False, "choices": ["NoReadAhead", "ReadAhead", "AdaptiveReadAhead"],
                                  "default": "NoReadAhead"},
            "stripe_size": {"required": False, "type": 'int', "default": 64 * 1024},
            "capacity": {"required": False, "type": 'float'},
            "controller_id": {"required": False, "type": 'str'},
            "media_type": {"required": False, "choices": ['HDD', 'SSD']},
            "protocol": {"required": False, "choices": ['SAS', 'SATA']},
            "raid_reset_config": {"required": False, "choices": ['True', 'False'], "default": 'False'},
            "raid_init_operation": {"required": False, "choices": ['None', 'Fast']}
        },
        supports_check_mode=True)

    try:
        _validate_options(module.params)
        with iDRACConnection(module.params) as idrac:
            storage_status = run_server_raid_config(idrac, module)
            changed = False
            if 'changes_applicable' in storage_status:
                changed = storage_status['changes_applicable']
            elif module.params['state'] != 'view':
                if storage_status.get("Status", "") == "Success":
                    changed = True
                    if storage_status.get("Message", "") == "No changes found to commit!" \
                            or storage_status.get("Message", "") == "Unable to find the virtual disk":
                        changed = False
                        module.exit_json(msg=storage_status.get('Message', ""),
                                         changed=changed, storage_status=storage_status)
                else:
                    module.fail_json(msg="Failed to perform storage operation: %s" % storage_status.get("Message", ""))
    except (ImportError, ValueError, RuntimeError, TypeError) as e:
        module.fail_json(msg=str(e))
    msg = "Successfully completed the {0} storage volume operation".format(module.params['state'])
    if module.check_mode and module.params['state'] != 'view':
        msg = storage_status.get("Message", "")
    module.exit_json(msg=msg, changed=changed, storage_status=storage_status)
Exemplo n.º 14
0
def main():
    module = AnsibleModule(
        argument_spec={
            "idrac_ip": {"required": True, "type": 'str'},
            "idrac_user": {"required": True, "type": 'str'},
            "idrac_pwd": {"required": True, "type": 'str', "no_log": True},
            "idrac_port": {"required": False, "default": 443, "type": 'int'},

            "command": {"required": False, "type": 'str',
                        "choices": ['export', 'import'], "default": 'export'},
            "job_wait": {"required": True, "type": 'bool'},

            "share_name": {"required": True, "type": 'str'},
            "share_user": {"required": False, "type": 'str'},
            "share_pwd": {"required": False, "type": 'str', "no_log": True},
            "scp_components": {"required": False,
                               "choices": ['ALL', 'IDRAC', 'BIOS', 'NIC', 'RAID'],
                               "default": 'ALL'},

            "scp_file": {"required": False, "type": 'str'},
            "shutdown_type": {"required": False,
                              "choices": ['Graceful', 'Forced', 'NoReboot'],
                              "default": 'Graceful'},
            "end_host_power_state": {"required": False,
                                     "choices": ['On', 'Off'],
                                     "default": 'On'},

            "export_format": {"required": False, "type": 'str',
                              "choices": ['JSON', 'XML'], "default": 'XML'},
            "export_use": {"required": False, "type": 'str',
                           "choices": ['Default', 'Clone', 'Replace'], "default": 'Default'}
        },
        required_if=[
            ["command", "import", ["scp_file"]]
        ],
        supports_check_mode=False)

    module.deprecate("The 'dellemc_server_config_profile' module has been deprecated. "
                     "Use 'idrac_server_config_profile' instead",
                     version=2.12)

    try:
        changed = False
        with iDRACConnection(module.params) as idrac:
            command = module.params['command']
            if command == 'import':
                scp_status = run_import_server_config_profile(idrac, module)
                if "No changes were applied" not in scp_status.get('Message', ""):
                    changed = True
            else:
                scp_status = run_export_server_config_profile(idrac, module)
        module.exit_json(changed=changed, msg="Successfully {0}ed the Server Configuration Profile.".format(command),
                         scp_status=scp_status)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))
Exemplo n.º 15
0
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_password=dict(required=True,
                           type='str', aliases=['idrac_pwd'], no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_password=dict(required=False, type='str', aliases=['share_pwd'], no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # change idrac user
            action=dict(required=False, choices=['create', 'delete', 'modify'], default='create'),
            user_name=dict(required=False, default=None, type='str'),
            user_password=dict(required=False, default=None,
                               type='str', no_log=True),
            privilege_users=dict(required=False, choices=['Administrator', 'NoAccess', 'Readonly', 'Operator'],
                                 default=None),
            ipmilanprivilege_users=dict(required=False,
                                        choices=['Administrator', 'No_Access', 'Operator', 'User'],
                                        default=None),
            ipmiserialprivilege_users=dict(required=False,
                                           choices=['Administrator', 'No_Access', 'Operator', 'User'],
                                           default=None),
            enable_users=dict(required=False, choices=['Enabled', 'Disabled']),
            solenable_users=dict(required=False, choices=['Enabled', 'Disabled']),
            protocolenable_users=dict(required=False, choices=['Enabled', 'Disabled']),
            authenticationprotocol_users=dict(required=False, choices=['T_None', 'SHA', 'MD5'], default=None),
            privacyprotocol_users=dict(required=False, choices=['T_None', 'DES', 'AES'], default=None),

        ),

        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_idrac_users_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
Exemplo n.º 16
0
def dellemc_get_system_inventory(idrac_ip,idrac_user,idrac_passwd,idrac_port):

    try:
        ANSIBALLZ_PARAMS = {
            "idrac_ip": idrac_ip,
            "idrac_user": idrac_user,
            "idrac_password": idrac_passwd,
            "idrac_port": idrac_port,
        }

        with iDRACConnection(ANSIBALLZ_PARAMS) as idrac:
            data, err = run_get_system_inventory(idrac)

        return data['msg']
    except:
        raise Exception('ERROR')
Exemplo n.º 17
0
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            scp_components=dict(
                required=False,
                choices=['ALL', 'IDRAC', 'BIOS', 'NIC', 'RAID'],
                default='ALL'),
            job_wait=dict(required=True, type='bool'),
            export_format=dict(required=False,
                               type='str',
                               choices=['JSON', 'XML'],
                               default='XML'),
            export_use=dict(required=False,
                            type='str',
                            choices=['Default', 'Clone', 'Replace'],
                            default='Default')),
        supports_check_mode=False)
    module.deprecate(
        "The 'dellemc_export_server_config_profile' module has been deprecated. "
        "Use 'dellemc_idrac_server_config_profile' instead",
        version=2.11)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_export_server_config_profile(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC Credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Network File Share
            share_name=dict(required=True, type='str'),
            share_user=dict(required=False, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            scp_file=dict(required=True, type='str'),
            scp_components=dict(required=False,
                                choices=['ALL', 'IDRAC', 'BIOS', 'NIC', 'RAID'],
                                default='ALL'),
            shutdown_type=dict(required=False,
                               choices=['Graceful', 'Forced', 'NoReboot'],
                               default='Graceful'),
            end_host_power_state=dict(required=False,
                                      choices=['On', 'Off'],
                                      default='On'),
            job_wait=dict(required=True, type='bool')
        ),

        supports_check_mode=False)
    module.deprecate("The 'dellemc_import_server_config_profile' module has been deprecated. "
                     "Use 'dellemc_idrac_server_config_profile' instead",
                     version=3.1)
    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_import_server_config_profile(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
Exemplo n.º 19
0
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # setup NTP
            enable_ntp=dict(required=False,
                            choices=['Enabled', 'Disabled'],
                            default=None),
            ntp_server_1=dict(required=False, default=None),
            ntp_server_2=dict(required=False, default=None),
            ntp_server_3=dict(required=False, default=None),

            # set up timezone
            setup_idrac_timezone=dict(required=False, type='str',
                                      default=None),
        ),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_idrac_timezone_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC Credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Network File Share
            share_name=dict(required=True, type='str'),
            share_user=dict(required=False, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_mnt=dict(required=True, type='str'),

            # Firmware update parameters
            catalog_file_name=dict(required=False,
                                   type='str',
                                   default='Catalog.xml'),
            reboot=dict(required=False, default=False, type='bool'),
            job_wait=dict(required=False, default=True, type='bool')),
        supports_check_mode=False)

    module.deprecate(
        "The 'dellemc_install_firmware' module has been deprecated. "
        "Use 'dellemc_idrac_firmware' instead",
        version=2.11)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_update_fw_from_nw_share(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec={
            "idrac_ip": {"required": True, "type": 'str'},
            "idrac_user": {"required": True, "type": 'str'},
            "idrac_password": {"required": True, "type": 'str', "aliases": ['idrac_pwd'], "no_log": True},
            "idrac_port": {"required": False, "default": 443, "type": 'int'},

            "share_name": {"required": True, "type": 'str'},
            "share_user": {"required": False, "type": 'str'},
            "share_password": {"required": False, "type": 'str', "aliases": ['share_pwd'], "no_log": True},
            "share_mnt": {"required": False, "type": 'str'},

            "catalog_file_name": {"required": False, "type": 'str', "default": "Catalog.xml"},
            "reboot": {"required": False, "type": 'bool', "default": False},
            "job_wait": {"required": False, "type": 'bool', "default": True},
            "ignore_cert_warning": {"required": False, "type": 'bool', "default": True},
            "apply_update": {"required": False, "type": 'bool', "default": True},
        },

        supports_check_mode=False)

    try:
        # Validate the catalog file
        _validate_catalog_file(module.params['catalog_file_name'])
        # Connect to iDRAC and update firmware
        with iDRACConnection(module.params) as idrac:
            status = update_firmware(idrac, module)
    except HTTPError as err:
        module.fail_json(msg=str(err), update_status=json.load(err))
    except (RuntimeError, URLError, SSLValidationError, ConnectionError, KeyError,
            ImportError, ValueError, TypeError) as e:
        module.fail_json(msg=str(e))

    module.exit_json(msg=status['update_msg'], update_status=status['update_status'],
                     changed=status['changed'])
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC Handle
            idrac=dict(required=False, type='dict'),

            # iDRAC credentials
            idrac_ip=dict(required=True, default=None, type='str'),
            idrac_user=dict(required=True, default=None, type='str'),
            idrac_pwd=dict(required=True,
                           default=None,
                           type='str',
                           no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # conditional variable for create or remove.
            state=dict(required=True,
                       choices=['present', 'absent'],
                       default=None),

            # Raid configuration Attributes
            vd_name=dict(required=False, type='str', default=None),
            span_depth=dict(required=False, type='int', default=1),
            span_length=dict(required=False, type='int', default=2),
            number_dedicated_hot_spare=dict(required=False,
                                            type='int',
                                            default=0),
            number_global_hot_spare=dict(required=False, type='int',
                                         default=0),
            raid_level=dict(required=False,
                            type='str',
                            choices=[
                                'RAID 0', 'RAID 1', 'RAID 5', 'RAID 6',
                                'RAID 10', 'RAID 50', 'RAID 60'
                            ],
                            default="RAID 0"),
            disk_cache_policy=dict(required=False,
                                   type='str',
                                   choices=["Default", "Enabled", "Disabled"],
                                   default="Default"),
            write_cache_policy=dict(
                required=False,
                type='str',
                choices=["WriteThrough", "WriteBack", "WriteBackForce"],
                default="WriteThrough"),
            read_cache_policy=dict(
                required=False,
                type='str',
                choices=["NoReadAhead", "ReadAhead", "Adaptive"],
                default="NoReadAhead"),
            stripe_size=dict(required=False, type='int', default=64 * 1024),

            # pd_filter parameter
            controller_fqdd=dict(required=True, type='str'),
            media_type=dict(required=False,
                            choices=['HDD', 'SSD'],
                            default='HDD',
                            type='str'),
            bus_protocol=dict(required=False,
                              choices=['SAS', 'SATA'],
                              default='SATA',
                              type='str'),
        ),
        supports_check_mode=True)
    module.deprecate(
        "The 'dellemc_configure_raid' module has been deprecated. "
        "Use 'dellemc_idrac_storage_volume' instead",
        version=2.4)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_server_raid_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)
def main():
    module = AnsibleModule(
        argument_spec=dict(

            # iDRAC credentials
            idrac_ip=dict(required=True, type='str'),
            idrac_user=dict(required=True, type='str'),
            idrac_pwd=dict(required=True, type='str', no_log=True),
            idrac_port=dict(required=False, default=443, type='int'),

            # Export Destination
            share_name=dict(required=True, type='str'),
            share_pwd=dict(required=False, type='str', no_log=True),
            share_user=dict(required=False, type='str'),
            share_mnt=dict(required=False, type='str'),

            # setup DNS
            register_idrac_on_dns=dict(required=False,
                                       choices=['Enabled', 'Disabled'],
                                       default=None),
            dns_idrac_name=dict(required=False, default=None, type='str'),
            auto_config=dict(required=False,
                             choices=['Enabled', 'Disabled'],
                             default=None,
                             type='str'),
            static_dns=dict(required=False, default=None, type="str"),

            # set up idrac vlan
            setup_idrac_nic_vlan=dict(required=False,
                                      choices=['Enabled', 'Disabled']),
            vlan_id=dict(required=False, type='int'),
            vlan_priority=dict(required=False, type='int'),

            # set up NIC
            enable_nic=dict(required=False,
                            choices=['Enabled', 'Disabled'],
                            default=None),
            nic_selection=dict(
                required=False,
                choices=['Dedicated', 'LOM1', 'LOM2', 'LOM3', 'LOM4'],
                default=None),
            failover_network=dict(
                required=False,
                choices=['ALL', 'LOM1', 'LOM2', 'LOM3', 'LOM4', 'T_None'],
                default=None),
            auto_detect=dict(required=False,
                             choices=['Enabled', 'Disabled'],
                             default=None),
            auto_negotiation=dict(required=False,
                                  choices=['Enabled', 'Disabled'],
                                  default=None),
            network_speed=dict(required=False,
                               choices=['T_10', 'T_100', 'T_1000'],
                               default=None),
            duplex_mode=dict(required=False,
                             choices=['Full', 'Half'],
                             default=None),
            nic_mtu=dict(required=False, type='int'),

            # setup iDRAC IPV4
            ip_address=dict(required=False, default=None, type="str"),
            enable_dhcp=dict(required=False,
                             choices=["Enabled", "Disabled"],
                             default=None),
            enable_ipv4=dict(required=False,
                             choices=["Enabled", "Disabled"],
                             default=None),

            # setup iDRAC Static IPv4
            dns_from_dhcp=dict(required=False,
                               choices=["Enabled", "Disabled"],
                               default=None),
            static_dns_1=dict(required=False, default=None, type="str"),
            static_dns_2=dict(required=False, default=None, type="str"),
            static_gateway=dict(required=False, type="str"),
            static_net_mask=dict(required=False, type="str"),
        ),
        supports_check_mode=True)

    try:
        with iDRACConnection(module.params) as idrac:
            msg, err = run_idrac_network_config(idrac, module)
    except (ImportError, ValueError, RuntimeError) as e:
        module.fail_json(msg=str(e))

    if err:
        module.fail_json(**msg)
    module.exit_json(**msg)