streamline package naming
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# user:edit
|
||||
|
||||
**Modify an existing user's password or group membership**
|
||||
|
||||
## Purpose
|
||||
|
||||
This cube allows you to update existing user accounts on the target system. It can be used to change passwords, add users to new groups (like `docker` or `sudo`), or revoke group memberships.
|
||||
|
||||
## What This Cube Does
|
||||
|
||||
1. Identifies the existing user on the target system
|
||||
2. Updates the user's password if `PASSWORD` is provided
|
||||
3. Adds the user to the groups specified in `GROUPS`
|
||||
4. Removes the user from the groups specified in `GROUPS_ABSENT`
|
||||
|
||||
## Configuration
|
||||
|
||||
| Variable | Type | Description | Required |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| `USER` | `string` | The username of the account to modify | Yes |
|
||||
| `PASSWORD` | `string` | New password for the user. **Secret**: never recorded in a session or history file, masked in printed commands, re-prompted on replay. | No |
|
||||
| `GROUPS` | `string` | Comma-separated list of groups to ADD (e.g., `docker,sudo`) | No |
|
||||
| `GROUPS_ABSENT` | `string` | Comma-separated list of groups to REMOVE | No |
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `apt/essentials`: Standard system utilities.
|
||||
|
||||
## Usage
|
||||
|
||||
### Changing a Password
|
||||
|
||||
```bash
|
||||
nopy install user:edit --env USER=myuser --env PASSWORD=newsecurepassword
|
||||
```
|
||||
|
||||
### Adding a User to the Docker Group
|
||||
|
||||
```bash
|
||||
nopy install user:edit --env USER=myuser --env GROUPS=docker
|
||||
```
|
||||
|
||||
### Revoking Sudo Access
|
||||
|
||||
```bash
|
||||
nopy install user:edit --env USER=myuser --env GROUPS_ABSENT=sudo
|
||||
```
|
||||
|
||||
## Security Notes
|
||||
|
||||
- When setting passwords via the CLI, they may be visible in your shell history. Consider using a session file or interactive prompts for sensitive values.
|
||||
- Changing your own user's groups or password may require a re-login to take full effect.
|
||||
@@ -0,0 +1,24 @@
|
||||
from pyinfra import host
|
||||
from pyinfra.operations import server
|
||||
|
||||
# [agnt://cogen/cogen/user-edit-2]{cartridge: "ansiblings/cubes", action: "generated", status: "generated"}
|
||||
|
||||
"""
|
||||
Deployment script for user:edit.
|
||||
Updates password and group membership for an existing user.
|
||||
"""
|
||||
|
||||
USER = host.data.USER
|
||||
PASSWORD = host.data.get('PASSWORD')
|
||||
GROUPS = [g.strip() for g in str(host.data.get('GROUPS', '')).split(',') if g.strip()]
|
||||
GROUPS_ABSENT = [g.strip() for g in str(host.data.get('GROUPS_ABSENT', '')).split(',') if g.strip()]
|
||||
|
||||
# Update user details
|
||||
server.user(
|
||||
name=f"Update user {USER}",
|
||||
user=USER,
|
||||
password=PASSWORD,
|
||||
groups=GROUPS,
|
||||
groups_absent=GROUPS_ABSENT,
|
||||
_sudo=True,
|
||||
)
|
||||
@@ -0,0 +1,27 @@
|
||||
import { Manifest } from '@bitsquare/nopy-cubes';
|
||||
import { z } from 'zod';
|
||||
|
||||
// [agnt://cogen/cogen/user-edit-1]{cartridge: "ansiblings/cubes", action: "generated", status: "generated"}
|
||||
|
||||
/**
|
||||
* Manifest for the user:edit cube.
|
||||
* Allows modifying existing user accounts (password, groups).
|
||||
*/
|
||||
export default Manifest({
|
||||
id: 'user:edit',
|
||||
name: 'user:edit - Modify an existing user account',
|
||||
dependencies: () => [],
|
||||
secrets: ['PASSWORD'],
|
||||
schema: z.object({
|
||||
USER: z.string().describe('The username of the account to modify'),
|
||||
PASSWORD: z.string().optional().describe('New password for the user (optional)'),
|
||||
GROUPS: z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('Comma-separated list of groups the user SHOULD be in (optional)'),
|
||||
GROUPS_ABSENT: z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('Comma-separated list of groups to REMOVE from the user (optional)'),
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user