mysql - 使用SaltStack创建Mysql数据库

标签 mysql vagrant salt-stack devops

我正在使用 SaltStack(带 vagrant)/Ubuntu 12.04。

我的目标是安装 Mysql,创建数据库和用户并授予所有权限。

这个 SLS 文件有什么问题?

mysql_setup:
  debconf.set:
    - name: mysql-server
    - data:
        'mysql-server/root_password': {'type': 'string', 'value': '{{ pillar['database']['password'] }}'}
        'mysql-server/root_password_again': {'type': 'string', 'value': '{{ pillar['database']['password'] }}'}

mysql-server:
  pkg:
    - installed
    - require:
      - debconf: mysql_setup

mysql-base:
  mysql_database.present:
    - name: owncloud
  mysql_user.present:
    - name: owncloud
    - password: pass
  mysql_grants.present:
    - database: owncloud.*
    - grant: ALL PRIVILEGES
    - user: owncloud

我有这个错误:

[INFO    ] All specified answers are already set
[INFO    ] Completed state [mysql-server] at time 14:48:13.611204
[INFO    ] Running state [mysql-server] at time 14:48:13.644547
[INFO    ] Executing state pkg.installed for mysql-server
[INFO    ] Package mysql-server is already installed.
[INFO    ] Completed state [mysql-server] at time 14:48:13.695092
[DEBUG   ] LazyLoaded mysql_database.mod_init
[INFO    ] Running state [owncloud] at time 14:48:13.702359
[DEBUG   ] LazyLoaded mysql_database.present
[ERROR   ] State 'mysql_database.present' was not found in SLS 'mysql'

[DEBUG   ] LazyLoaded mysql_user.mod_init
[INFO    ] Running state [owncloud] at time 14:48:13.710744
[DEBUG   ] LazyLoaded mysql_user.present
[ERROR   ] State 'mysql_user.present' was not found in SLS 'mysql'

[DEBUG   ] LazyLoaded mysql_grants.mod_init
[INFO    ] Running state [mysql-base] at time 14:48:13.733003
[DEBUG   ] LazyLoaded mysql_grants.present
[ERROR   ] State 'mysql_grants.present' was not found in SLS 'mysql'

最佳答案

除了@Utah_Dave 的建议之外,您可能还需要 python-mysqldb APT 包以及 mysql pip 包,并且您需要连接信息,或者在你的 minion 配置中或提供给状态,可能像这样:

foo_db:
  mysql_database.present:
    - name: {{ pillar['SQL_DATABASE'] }}
    - connection_host: {{ pillar['SQL_HOST'] }}
    - connection_user: {{ pillar['SQL_ROOT_USER'] }}
    - connection_pass: {{ pillar['SQL_ROOT_PASSWORD'] }}
    - require:
      - pip: mysql

future 状态可以通过use:重用连接信息,如下所示:

sql_app_user:
  mysql_user.present:
    - name: {{ pillar['SQL_APP_USER'] }}
    - password: {{ pillar['SQL_APP_PASSWORD'] }}
    - host: '%'
    - use:
      - mysql_database: foo_db

这是为 salt.modules.mysql 记录的.要安装其他依赖项:

server_pkgs:
  pkg:
    - installed
    - pkgs:
      - python-dev
    - refresh: True

mysql_python_pkgs:
  pkg.installed:
    - pkgs:
      - libmysqlclient-dev
      - mysql-client
      - python-mysqldb
    - require:
      - pkg: server_pkgs

python-pip:
  pkg:
    - installed
    - refresh: False

mysql:
  pip.installed:
    - require:
      - pkg: python-pip
      - pkg: mysql_python_pkgs

这是我自己针对特定项目的状态的简化版本,因此它可能不是您需要的最少的东西,但它绝对有效。

关于mysql - 使用SaltStack创建Mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306693/

相关文章:

macos - Laravel/Homestead - OSX - Vagrant 连接超时

virtualbox - 为什么 vagrant 使用 vmdk 磁盘格式作为其标准包格式?

Windows服务 Controller : view `sc failure` settings for a service

python - 使用 salt 的输出作为 SLS 状态或支柱的输入?

mysql - 似乎无法找到 mysql 数据库

python - 操作系统错误: [Errno 26] Text file busy on vagrant with synced_folder

mysql - 查询获取上个月数据(从现在开始计算)并解析Json以获取Json中的项目

django - Salt - virtualenv 的多个需求文件

php - Laravel 分页使用 DB::raw 查询

javascript - 如何在 Amazon Athena 上查询(搜索)具有 JSON 值的 sql?