AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 538517
Accepted
a coder
a coder
Asked: 2013-09-13 12:47:03 +0800 CST2013-09-13 12:47:03 +0800 CST 2013-09-13 12:47:03 +0800 CST

带有 $servername 的 case 语句失败

  • 772

我正在一个独立系统上探索 puppet,并在复制 MySQL 的配置文件时遇到了困难。使用下面的清单,安装了 MySQL,但未复制 my.cnf 文件。

init.pp(主机名:dev_one.site.com)

class mysql {

  case $servername {
    "prod_one.site.com", "dev_one.site.com", "sandbox_one.site.com": {
      $conf_file    = 'my.cnf.one'
    }
    "prod_two.site.com", "dev_two.site.com", "sandbox_two.site.com": {
      $conf_file    = 'my.cnf.two'
    }
  }


  package { "mysql-server":
    ensure => present,
  }

  package { "mysql":
    ensure => present,
  }

  file { 'my.cnf':
    path    => '/etc/',
    ensure  => file,
    require => Package['mysql'],
    source  => "puppet:///modules/mysql/${conf_file}"
  }

  service { "mysqld":
    ensure => running,
    enable => true,
    require => Package["mysql-server"]
  }

}

结果如下:

[root@dev_one manifests]# puppet apply --verbose ./init.pp 
Info: Applying configuration version '1379018555'
Notice: /Stage[main]/Mysql/Package[mysql-server]/ensure: created
Notice: /Stage[main]/Mysql/Service[mysqld]/ensure: ensure changed 'stopped' to 'running'
Info: /Stage[main]/Mysql/Service[mysqld]: Unscheduling refresh on Service[mysqld]
Notice: Finished catalog run in 14.34 seconds

[root@dev_one manifests]# ll /etc/my*
total 0

没有错误,但 my.cnf 没有被复制。我究竟做错了什么?

mysql
  • 1 1 个回答
  • 124 Views

1 个回答

  • Voted
  1. Best Answer
    Shane Madden
    2013-09-13T13:03:56+08:002013-09-13T13:03:56+08:00

    首先,在哪里$servername设置?这不是一个标准的事实,因此要使其具有内容,您需要具有自定义事实或清单变量。你想使用$clientcert还是$fqdn代替?

    在你的file资源上..我认为这应该是错误的,但也许不是,因为/etc/存在..问题是声明的资源试图管理/etc/而不是/etc/my.cnf. 在资源名称中声明文件的完整路径并省略path参数:

    file { '/etc/my.cnf':
    

    或者,让path参数成为文件的完整路径(然后名称无关紧要):

    file { 'MySQL Config':
        path    => '/etc/my.cnf',
    

    但是.. 我真的建议不要在清单中硬编码“此服务器获取哪个配置文件”的逻辑。改为使用带有参数化类的 Hiera 或节点定义。

    • 2

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve