AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 654042
Accepted
mc0e
mc0e
Asked: 2014-12-22 08:03:36 +0800 CST2014-12-22 08:03:36 +0800 CST 2014-12-22 08:03:36 +0800 CST

Como posso testar a data no fantoche para implementar uma regra temporária?

  • 772

Qual é uma boa maneira de testar a data/hora atual no fantoche para implementar uma alteração temporária?

por exemplo, acabamos de ter um problema de segurança com o NTP e demorou um pouco para o Debian lançar uma atualização. Parecia mais simples desligar o ntp por um tempo.

service { 'ntp':
  # remember to re-enable this after ntp is secured.  CVE-XXXXXXXXXX
  ensure => "stopped",
  ...
}

Então isso requer lembrar de voltar e mudá-lo de volta. O que eu gostaria de ter feito seria tornar o valor do ensureatributo dependente de um seletor que testasse a data em tempo de execução.

Alguém pode sugerir uma boa maneira de fazer isso?

Posso imaginar disponibilizar uma função por meio do analisador de marionetes para fazer isso, e seria bom saber se alguém já escreveu isso, mas pontos de bônus se você tiver uma maneira de fazer isso sem um módulo extra.

service { 'ntp':
  ensure => date_is_after("23 Dec 2014"): {
     true => "running",
     false => "stopped"
  }
  ...
}

Ocorre-me também que um teste baseado na versão atual do pacote ntp seria bastante elegante, mas também não tenho certeza de como você faria isso no puppet.

puppet
  • 3 3 respostas
  • 2181 Views

3 respostas

  • Voted
  1. bodgit
    2014-12-22T10:21:42+08:002014-12-22T10:21:42+08:00

    Para poder obter a versão atual do pacote NTP, você precisa escrever um fato personalizado que é enviado para cada host gerenciado pluginsynce discerne o valor consultando o gerenciador de pacotes local. Consulte https://docs.puppetlabs.com/facter/2.3/custom_facts.html para escrever fatos personalizados.

    Você pode então usar a versioncmp()função em seu manifesto para habilitar ou desabilitar condicionalmente o daemon NTP usando o valor desse fato e comparando-o com a versão boa conhecida do NTP que contém sua correção.

    • 2
  2. Best Answer
    Felix Frank
    2014-12-24T02:19:53+08:002014-12-24T02:19:53+08:00

    Para usar a data no mestre, você pode escrever um shell wrapper simples datee invocá-lo a partir do manifesto usando a função generate .

    $ echo -e '#!/bin/bash\n/bin/date -I\n' >/tmp/dater
    $ chmod 755 /tmp/dater
    $ bundle exec puppet apply -e 'notice(generate("/tmp/dater"))'
    Notice: Scope(Class[main]): 2014-12-23
    

    Você pode buscar o resultado em uma variável e enlouquecer.

    $now = generate("/tmp/dater")
    

    Como o Puppet não compara strings usando <e >gosta bashou awkfaz, você provavelmente desejará usar date +%sem vez disso, para poder comparar numericamente o carimbo de data/hora com qualquer data-alvo definida.

    Como um aparte, eu pessoalmente me abstenho de implementar esse tipo de coisa. Ele vem com um alto risco de cair em seu pé muito fortemente. Em vez disso, considere definir uma chave Hiera global, que você pode virar manualmente depois que seu calendário o lembrar de fazer isso. Não construa suas surpresas amigáveis ​​em Puppet.

    • 1
  3. Michaël Witrant
    2016-05-07T11:39:07+08:002016-05-07T11:39:07+08:00

    Você pode escrever um fato externo assim:

    #!/bin/bash
    echo "date=$(date '+%Y-%m-%d')"
    

    Para distribuí-lo, você pode colocá-lo em um novo módulo (por exemplo modules/date/facts.d/date).

    E então você pode fazer

    if $::date > "2016-05-15" {
      ...
    }
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve