When a database is migrated to another server by copying the database file or restoring it from a backup file, the original database user account references are also carried with it.
Those accounts contain the account IDs specific to the original database server.
To provide access to the restored database on the new database server we need to delete the old user accounts from the restored database and configure the database access in the new database server. This will re-create the user accounts with the correct IDs in the restored database.
When the Chef aws cookbook’s ebs_volume.rb resource tries to bring a volume online, partition, and format it we get the error message:
RuntimeError: Volume vol-… attached at xvdf but does not conform to this resource’s specifications C:/chef/cache/cookbooks/aws/resources/ebs_volume.rb:46:in `block in class_from_file’
Make sure the “size” attribute value in the aws_ebs_volume resource call matches the actual size of the volume in GiB.
When we tried to install the Microsoft Access Database Engine and Office 2007 System Driver on a Windows Server 2016 an error message popped up immediately:
The installation of this package failed
When we ran the installation with the logging option, we have found a message at the bottom of the file:
Will create the folder ‘\MSECache\AceRedist\1033’ CActionCreateFolder::execute ends CActionIf::execute starts Begin evaluation of the condition The property ‘SYS.ERROR.INERROR’ is equal to ‘1’
The installer could create the \MSECache\AceRedist\1033 on the D: drive where we executed the program, but for some reason the directory was empty.
We decided to approach the problem in two steps:
Extract the installer files to two separate subfolders of the current directory, as the extracted file names are the same for the two packages.
When the Linux disk drive is full, first we need to identify the reason for the drive overuse. Many times the drive is filled with one large log file, that can be identified and truncated.
To list the directory sizes under the current directory execute
du -sh *
To empty a file, overwrite it with nothing, so the process that writes into it still can access it.
cat /dev/null > ./MY_LARGE_LOG_FILE
When we free up the disk space, the server needs time to recover and do some housekeeping. The load average numbers show how busy the server was in the recent minutes. Check the load on the computer with
The load averages are from the past 1, 5, and 15 minutes
Grow the partition
If extra drive space is needed, enlarge the volume. We also need to grow the partition, so the operating system can access the additional space on the volume.
Grow the partition to use the entire volume. Use the growpart command, and specify the name of the volume and the partition number.
sudo growpart /dev/nvme0n1 1
If the file system is xfs, update the xfs file system metadata to use the entire partition
Error: EPERM: operation not permitted, rename ‘C:\Users\MY_USERNAME\.config\configstore\update-notifier-nodemon.json.3604946166’ -> ‘C:\Users\MY_USERNAME\.config\configstore\update-notifier-nodemon.json’
In case of this error rename the C:\Users\MY_USERNAME\.config\configstore\update-notifier-nodemon.json to update-notifier-nodemon.json.ORIGINAL to allow NPM to use the file name as the target of a rename operation.
We will use CodeDeploy to automate the application deployment in our AWS ECS Fargate cluster.
Create an AIM role for CodeDeploy to assume the ECS service role
In the AWS console navigate IAM and click the Roles link
Click the Create role button
Click the CodeDeploy link
Select CodeDeploy ECS
Keep the default setting
Enter a name for the role
Create the CodeDeploy application
We will use Python and Boto3 to create and configure the CodeDeploy application
Install Python on your workstation
Install Boto3 on your workstation
pip install boto3
Create the appspec.json file
The AppSpec file contains instructions for CodeDeploy to deploy the new version of the application. To get the “taskDefinitionArn” of the Task Definition, execute the command in a terminal
If the script successfully created the CodeDeploy application the first deployment starts automatically
In CodeDeploy
In the AWS console open the CodeDeploy page
Select Applications
Select the application name
On the Deployments tab select the deployment
Check the deployment status
In the ECS cluster
In the AWS console select the cluster and the service
Select the Deployments tab
CodeDeploy starts to launch a new, Replacement task
At this pint the prod and test listeners of the load balancer both point to the old task version
When the new task started 100% of the traffic still routed to the old version
The load balancer’s Test listener starts to route traffic to the new task behind target group “b”
When the deployment succeeded and none of the specified Hook Lambdas (if any) returned failure, the Test and Production traffic both are routed to the new task version
The old (blue) task stays active during the time span we specified in the “termination_wait_minutes” variable of the Python script. During that time we can click the Stop and roll back deployment button to restore the prior version of the task.
While the old (blue) task is still available the deployment is still “running”. To be able to start a new deployment we need to click the “Terminate original task set” button.
When the wait time is over, the old deployment terminates in the service
Troubleshooting
If you get the error message
AWS CodeDeploy does not have the permissions required to assume the role …
make sure you have used the correct role ARN from
Deployment fails with error code 404
If you deploy a Socket.IO server make sure you add 404 to the valid Success Codes in both Load Balancer target groups.