Je suis nouveau à Chef et Test-cuisine et j'essaye d'utiliser le fichier JSON aléatoire comme attribut ou environnement (de préférence l'attribut), mais malheureusement je ne peux pas accéder au JSON les valeurs des recettes.Accéder aux valeurs JSON en utilisant Chef et test-cuisine
J'utilise la structure de répertoire suivant:
uat
├── attributes
│ ├── dev.json
│ ├── .kitchen
│ │ └── logs
│ │ └── kitchen.log
│ └── prod.json
├── Berksfile
├── Berksfile.lock
├── chefignore
├── environments
│ ├── dev.json
│ └── prod.json
├── Gemfile
├── Gemfile.lock
├── .kitchen
│ ├── default-windows.yml
│ └── logs
│ ├── default-windows.log
│ └── kitchen.log
├── .kitchen.yml
├── metadata.rb
└── recipes
├── default.rb
├── prep.rb
└── service_install.rb
C'est le .kitchen.yml:
---
driver:
name: machine
username: sample_user
password: sample_pass
hostname: 192.168.1.102
port: 5985
provisioner:
name: chef_zero
json_attributes: true
environments_path: 'environments/dev'
platforms:
- name: windows
suites:
- name: default
run_list:
- recipe[uat::default]
C'est le dev.json:
{
"groupID": "Project-name",
"directoryName": "sample_folder",
"environmentType": "UAT",
}
C'est la recette prep.rb:
directory "C:/Users/test/#{node['directoryName']}" do
recursive true
action :create
end
Si je crée something.rb dans les attributs dossier et contenu: default [ 'directoryName'] = 'sample_folder', il fonctionne comme un charme, mais je dois utiliser un fichier JSON qui permet de stocker les paramètres à l'échelle de l'entreprise.
Pourriez-vous m'aider s'il vous plaît à trouver ce que je fais mal.
Merci, cela a bien fonctionné. Est-il possible d'utiliser le JSON sans utiliser le default_argument: '{ « default_attributes »: {} }' – user3283749
Non, vous devez faire correspondre le schéma de l'objet de l'environnement. – coderanger