Робоча станція розробника
Цей посібник збирає Ubuntu 24.04 GNOME workstation з conservative tool set і explicit smoke tests. Language і editor versions follow selected package sources, unless you pin and review another source.
Prompt
Create an Ubuntu 24.04 GNOME development workstation with a dark color
scheme, SSH, Docker, Git, Python, Node.js, curl, jq, tmux, htop, and Neovim.
Create a locked-password user named dev with sudo and Docker group intent.
Do not add third-party repositories unless their HTTPS URL, signing key,
release support, and license are explicit. Add tests for the desktop session,
tool versions, Docker service, group membership, and one container smoke test.Review the recipe
{
"name": "ubuntu24-development-workstation",
"base_image": "ubuntu-24.04",
"os": {
"features": ["desktop", "ssh", "docker", "git", "python", "nodejs"],
"packages": ["curl", "jq", "tmux", "htop", "neovim"],
"users": [
{
"username": "dev",
"groups": ["sudo", "docker"],
"shell": "/bin/bash"
}
],
"desktop_settings": {
"color_scheme": "prefer-dark",
"fonts": {
"monospace_font": "Ubuntu Mono 13"
},
"power": {
"idle_delay": 600,
"sleep_inactive_ac_timeout": 0,
"sleep_inactive_ac_type": "nothing"
}
}
}
}Confirm each feature expands on Ubuntu 24.04 as expected. docker group membership commonly root-equivalent because can control Docker daemon; remove if user should not have that authority.
Versions and sources
Do not ask for «latest» in controlled workstation. Record versions actually available from selected snapshot and test those versions. Vendor repository or bootstrap installer adds separate trust root and update lifecycle; use only after reviewing key, repository metadata, terms, rollback behavior.
Tools such as Rustup, language version managers, editor extensions, container images can download moving code after image built. If matter to workstation baseline, pin them and include provenance in evidence packet.
Verification scenario
{
"id": "development-smoke",
"name": "Development workstation smoke test",
"enabled": true,
"tests": ["boot", "login", "packages", "services"],
"custom_tests": [
{
"description": "Confirm core tools and Docker are usable.",
"assertions": [
{
"type": "command_succeeds",
"description": "Python reports a version.",
"params": {"command": "python3 --version"}
},
{
"type": "command_succeeds",
"description": "Node.js reports a version.",
"params": {"command": "node --version"}
},
{
"type": "service_running",
"description": "The Docker daemon is running.",
"params": {"service": "docker"}
},
{
"type": "user_in_group",
"description": "The dev account has the reviewed Docker authority.",
"params": {"username": "dev", "group": "docker"}
}
]
}
]
}Add GUI assertion for every graphical editor actually install. Package check cannot detect broken first launch, license dialog, missing display integration, wrong default desktop.
Finally test login with approved enrollment or SSH-key path; recipe intentionally contains no password.