我正在编写Ansible剧本以在MySQL中创建数据库。我在用 Ansible 2.7版。无法识别问题/错误。我的s CentOS Linux版本7.6.1810(核心)中的主机系统。
我在ansible控制器计算机中安装了PyMySQL。的MySQL traget Windows机器上的版本是:Win64上的mysql Ver 8.0.14 x86_64(MySQL Community Server-GPL)。
我在下面写了一个有趣的剧本代码。
名称:运行远程PowerShell脚本主机:win任务:
名称:在MySQL中创建数据库 mysql_db: login_user:用户 login_password:密码 名称:测试 状态:存在 注册:输出
调试:Output =“ {{output.stdout}}”
- 调试:Output =“ {{output.stderr}}”
- 调试:var = output.stdout_lines
我的清单文件如下:
[赢得]一些IP
[win:vars] ansible_user =用户名ansible_password =密码 ansible_connection = ansible_winrm_server_cert_validation =忽略 ansible_winrm_transport =基本的ansible_port = 5985
我在运行剧本时遇到以下错误:
PLAY [运行远程PowerShell脚本]
任务[聚会事实] ****************************************************** ****************************************************** ***********************************************好的:[18.220。 114.161]
任务[在MySQL中创建数据库] ****************************************************** ****************************************************** ****************************************致命:[18.220.114.161]:失败! => {“已更改”:false, “ module_stderr”:“使用\” 1 \“参数调用\” Create \“的异常: \“在第4行:char:21 \ r \ n + def _ansiballz_main():\ r \ n +
〜\ r \ n'('之后应为表达式。\ r \ n第12行char:27 \ r \ n + 除了(AttributeError,OSError):\ r \ n +
〜\ r \ n在参数列表中缺少参数。\ r \ n在第14行:char:7 \ r \ n +
如果scriptdir不是None:\ r \ n +〜\ r \ n在if中的'if'之后缺少'(' 语句。\ r \ n如果sys.version_info <,则在第21行char:7 \ r \ n + (3,):\ r \ n +〜\ r \ n在if语句的'if'之后缺少'(' 行:21个字符:30 \ r \ n +如果sys.version_info <(3,):\ r \ n +
〜\ r \ n在','之后缺少表达式。\ r \ n在第21行char:25 \ r \ n +如果 sys.version_info <(3,):\ r \ n +〜\ r \ n'<' 运算符保留供将来使用。\ r \ n在第23行:char:32 \ r \ n +
MOD_DESC =('.py','U',imp.PY_SOURCE)\ r \ n +
〜\ r \ n在','之后缺少表达式。\ r \ n在第23行:char:33 \ r \ n +
MOD_DESC =('.py','U',imp.PY_SOURCE)\ r \ n +statement.\r\nAt line:23 char:32\r\n+ MOD_DESC = ('.py', 'U', imp.PY_SOURCE)\r\n+ ~\r\nMissing closing ')' in expression.\r\nAt line:23 char:46\r\n+ MOD_DESC = ('.py', 'U', imp.PY_SOURCE)\r\n+ ~\r\nUnexpected token ')' in expression or statement.\r\nNot all parse errors were reported. Correct the reported errors and try again.\"\r\nAt line:6 char:1\r\n+ $exec_wrapper = [ScriptBlock]::Create($split_parts[0])\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n + CategoryInfo : NotSpecified: (:) [], MethodInvocationException\r\n + FullyQualifiedErrorId : ParseException\r\n \r\nThe expression after '&' in a pipeline element produced an object that was not valid. It must result in a command \r\nname, a script block, or a CommandInfo object.\r\nAt line:7 char:2\r\n+ &$exec_wrapper\r\n+ ~~~~~~~~~~~~~\r\n + CategoryInfo : InvalidOperation: (:) [], RuntimeException\r\n + FullyQualifiedErrorId : BadExpression\r\n ", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1} to retry, use: --limit @/var/lib/awx/projects/runbooks/manage_mysql_database/create_mysql_db.retry PLAY RECAP ************************************************************************************************************************************************************* IP : ok=1 changed=0 unreachable=0 failed=1
答案 0 :(得分:0)
尝试使用ansible调用AWSCLI命令,这是我通过ansible创建MySQL rd时恰好遇到类似问题的解决方案。
例如:
- name: create rds using cli for decryption
command: aws rds create-db-instance --db-instance-identifier "{{ StackName }}" --allocated-storage 5 --db-instance-class "{{ db_instance_type }}" --engine mysql --master-username "{{ db_username }}" --master-user-password "{{ db_password }}" --multi-az --storage-encrypted --kms-key-id "{{ kms_id }}" --publicly-accessible --vpc-security-group-ids "{{ SG_Group }}" --db-subnet-group-name "{{ db_subnetgrp }}"